您好,登錄后才能下訂單哦!
我們的論壇設置的用戶上傳文件是存放在/data/www/data/目錄下
隨便在我們的論壇上發個帖子,并上傳一張圖片
我們來找找看這張圖片具體存在哪里:
[root@centos6 data]# cd p_w_upload/forum/
[root@centos6 forum]# ls -F
201701/
[root@centos6 forum]# cd 201701/
[root@centos6 201701]# ls -F
15/ index.html
[root@centos6 201701]# cd 15
[root@centos6 15]# ls
010620iksfhkkxvki105vd.jpg index.html
可見用戶上傳的圖片存放在
/data/www/data/p_w_upload/forum/201701/15/010620iksfhkkxvki105vd.jpg
在瀏覽器可以直接查看到這張圖片,如果沒有設置防盜鏈也可下載到該圖片。
我們在/data/www/data目錄下新建一個php文件
[root@centos6 ~]# cd /data/www/data/
[root@centos6 data]# vim info.php
<?php
phpinfo();
?>
不做任何限制的時候,服務器默認是可以解析該PHP文件的,這里是顯示服務器的配置,如果是用戶上傳的php***或病毒,那么服務器就危險了。
我們需要關閉PHP解析引擎:編輯Apache的虛擬主機配置文件,對網站根目錄下的data目錄關閉其php解析引擎,只需添加如下代碼:
[root@centos6 apache2]# vim conf/extra/httpd-vhosts.conf
……
<filesmatch "(.*)admin(.*)">
Order deny,allow
Deny from all
Allow from 127.0.0.1
</filesmatch>
<Directory /data/www/data>
php_admin_flag engine off
</Directory>
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.aaa.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.bbb.com$
RewriteRule ^/(.*)$ http://www.test.com/$1 [R=301,L]
</IfModule>
……
檢查無誤后重新加載配置文件:
[root@centos6 apache2]# apachectl -t
Syntax OK
[root@centos6 apache2]# apachectl graceful
再去訪問該文件:
回車后直接把文件下載下來了
再來禁止下載PHP文件:
[root@centos6 apache2]# vim conf/extra/httpd-vhosts.conf
……
<filesmatch "(.*)admin(.*)">
Order deny,allow
Deny from all
Allow from 127.0.0.1
</filesmatch>
<Directory /data/www/data>
php_admin_flag engine off
<filesmatch "(.*)php">
Order deny,allow
Deny from all
Allow from 127.0.0.1
</filesmatch>
</Directory>
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.aaa.com$ [OR]
……
檢查無誤后重新加載配置文件
[root@centos6 apache2]# apachectl -t
Syntax OK
[root@centos6 apache2]# apachectl graceful
再去訪問,發現403,也沒下載,實現了我們的目的
使用curl命令測試,發現解析不出來PHP
[root@centos6 apache2]# curl -x127.0.0.1:80 www.test.com/data/info.php
<?php
phpinfo();
?>
這里也可以去掉Allow 127.0.0.1這條規則
[root@centos6 apache2]# vim conf/extra/httpd-vhosts.conf
……
<filesmatch "(.*)admin(.*)">
Order deny,allow
Deny from all
Allow from 127.0.0.1
</filesmatch>
<Directory /data/www/data>
php_admin_flag engine off
<filesmatch "(.*)php">
Order deny,allow
Deny from all
</filesmatch>
</Directory>
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.aaa.com$ [OR]
……
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。