apache環境下禁止某文件夾內運行PHP腳本、禁止訪問文件或目錄執行權限的設置方法


apache環境下禁止某文件夾內運行PHP腳本、禁止訪問文件或目錄執行權限的設置方法

 

首先我們來看兩段對上傳目錄設置無權限的列子,配置如下:

<Directory "要去掉PHP執行權限的目錄路徑,如/upload"> 

ErrorDocument 404 /404/404.html 

ErrorDocument 403 /404/403.html 

<FilesMatch "\.(?i:php|php3|php4)$"> // ?是盡可能多的匹配.php的字符串,i是不區分大小寫,然后冒號后面跟上正則表達式,也可以寫成:<FilesMatch "\.(php|php3)$"> 

Order allow,deny 

Deny from all 

</FilesMatch> 

</Directory> 

上面的意思就是說,<Directory "要去掉PHP執行權限的目錄路徑,例如:/upload"> 內目錄路徑下所有php文件不區分大小寫,通過order,allow,deny原則判斷拒絕執行php文件,對nginx同樣也是可應用。

另外一種方法,是設置在.htaccess里面的,這個方法比較靈活一點,針對那些沒有apapche安全操作權限的網站管理員,推薦使用!
Apache
環境規則內容如下:Apache限制uploads目錄執行php腳本,把規則添加到.htaccess文件中,代碼如下:

RewriteEngine on RewriteCond % !^$ 

RewriteRule uploads/(.*).(php)$  [F] 

此方法僅限於apache服務器環境,windows環境無效。

apache禁止訪問某些文件/目錄
增加Files選項來控制,比如要不允許訪問 .inc 擴展名的文件,保護php類庫:

<Files ~ "\.inc$"> 

Order allow,deny 

Deny from all 

</Files> 

禁止訪問某些指定的目錄:(可以用 <DirectoryMatch> 來進行正則匹配)

<Directory ~ "^/var/www/(.+/)*[0-9]{3}"> 

Order allow,deny 

Deny from all 

</Directory> 

通過文件匹配來進行禁止,比如禁止所有針對圖片的訪問:

<FilesMatch \.(?i:gif|jpe?g|png)$> 

Order allow,deny 

Deny from all 

</FilesMatch> 

針對URL相對路徑的禁止訪問:

<Location /dir/> 

Order allow,deny 

Deny from all 

</Location> 

 

 

apache配置禁止訪問】
1.
禁止訪問某些文件/目錄
增加Files選項來控制,比如要不允許訪問 .inc 擴展名的文件,保護php類庫:

<Files ~ "\.inc$">
Order allow,deny
Deny from all
</Files>

禁止訪問某些指定的目錄:(可以用 <DirectoryMatch> 來進行正則匹配)

<Directory ~ "^/var/www/(.+/)*[0-9]{3}">
Order allow,deny
Deny from all
</Directory>

通過文件匹配來進行禁止,比如禁止所有針對圖片的訪問:

<FilesMatch \.(?i:gif|jpe?g|png)$>
Order allow,deny
Deny from all
</FilesMatch>

針對URL相對路徑的禁止訪問:

<Location /dir/>
Order allow,deny
Deny from all
</Location>

針對代理方式禁止對某些目標的訪問(<ProxyMatch> 可以用來正則匹配),比如拒絕通過代理訪問cnn.com

<Proxy http://piaoyun.cc/*>
Order allow,deny
Deny from all
</Proxy>

2. 禁止某些IP訪問/只允許某些IP訪問
如果要控制禁止某些非法IP訪問,在Directory選項控制:

<Directory "/var/www/web/">
Order allow,deny
Allow from all
Deny from 10.0.0.1 #
阻止一個IP
Deny from 192.168.0.0/24 #
阻止一個IP
</Directory>

只允許某些IP訪問,適合比如就允許內部或者合作公司訪問:

<Directory "/var/www/web/">
Order deny,allow
Deny from all
All from example.com #
允許某個域名
All from 10.0.0.1 #
允許一個iP
All from 10.0.0.1 10.0.0.2 #
允許多個iP
Allow from 10.1.0.0/255.255.0.0 #
允許一個IP段,掩碼對
All from 10.0.1 192.168 #
允許一個IP段,后面不填寫
All from 192.168.0.0/24 #
允許一個IP段,網絡號
</Directory>

Apache:解決辦法;

<Directory "/home/domain/public_html">
Options -Indexes FollowSymLinks
AllowOverride All
<Files ~ ".txt">
Order allow,deny
Deny from all
</Files>
</Directory>

 

 

PHP網站開發中,基於WEB服務器和PHP網站程序代碼的安全考慮,我們需要對相關的目錄或者文件訪問權限進行控制,以防止意外情況的發生,那么我們如何來實現這種功能呢?我們可以通過Apache來實現禁止目錄訪問(禁止游覽列出的目錄或文件列表)、禁止或允許IP與域名訪問目錄的功能。

環境說明

  我使用的是DedeCMS DedeAmpzPHP運行環境,PHP版本5.2.4Apache版本2.2.4

Apache中配置禁止目錄訪問,即禁止游覽列出的目錄/文件列表的方法

  訪問網站目錄時Apache默認配置為可列出目錄/文件列表,即當你訪問http://localhost時會列出相關的目錄和文件列表,我們可以通過修改Apache配置文件httpd.conf來實現禁止列出目錄/文件列表,方法如下:

1、打開apache配置文件httpd.conf

2、找到

[html] view plain copy

  1. <Directory />  
  2. Options Indexes  
  3. Allow Override None  
  4. Order allow,deny  
  5. Allow from all  
  6. </Directory>  

只需要修改Options IndexesOptions None即可,:根據PHP運行環境安裝包的不同,Options Indexes也有可能是Options Indexes FollowSymLinks,一並改為Options None即可。

3、保存httpd.conf,並重啟Apache即可,此時再訪問http://localhost時, apache http 403 禁止訪問錯誤信息

  Forbidden

  You don't have permission to access / on this server.

(注意:<Directory "e:/wamp/www/">中需要一並改為Options None

Apache單個或多個目錄禁止訪問方法

  這種方法通常用來禁止訪問者訪問后台管理目錄或者程序目錄,方法如下

1、打開apache配置文件httpd.conf

2、創建Directory塊,比如禁止訪問某個類庫目錄,可以這樣實現

[html] view plain copy

  1. <Directory /var/www/www.leapsoul.cn/inc>  
  2.     Order Deny,Allow  
  3.     Deny from all  
  4. </Directory>  

上述代碼實現了禁止所有用戶訪問www.leapsoul.cninc目錄的功能。如要實現禁止訪問所有目錄中inc目錄的功能,只要將

[html] view plain copy

  1. <Directory /var/www/www.leapsoul.cn/inc>  

更改為

[html] view plain copy

  1. <Directory /var/www/www.leapsoul.cn/*/inc>  

即可。

3、重啟Apache服務器。

其他說明

1、只允許或禁止某個域名進行目錄訪問

[html] view plain copy

  1. <Directory /var/www/www.leapsoul.cn/inc>  
  2.     Order Deny,Allow  
  3.     Deny from abc.com  
  4.     Allow from apache.org  
  5. </Directory>  

上述代碼實現禁止abc.com域中主機訪問inc目錄,允許apache.org域中主機訪問inc目錄的功能。

2、只允許或禁止某個IP進行目錄訪問

[html] view plain copy

  1. <Directory /var/www/www.leapsoul.cn/inc>  
  2.     Order Deny,Allow  
  3.     Deny from 10.1.1.2  
  4.     Allow from 192.168.1.0/255.255.255.0  
  5. </Directory>  

上述代碼實現禁止IP10.1.1.2訪問www.leapsoul.cn/inc目錄,允許IP192.168.1子網中的主機訪問www.leapsoul.cn/inc目錄的功能。

注意Allow from 192.168.1.0/255.255.255.0等同於Allow from 192.168.1Allow from 192.168.1.0/24

  至此,通過配置Apache服務器我們可以實現禁止目錄訪問(列出目錄或文件列表),也可以實現禁止訪問單個或者多個目錄,更可以對訪問者進行控制,比如允許或禁止某個IP或者域名對目錄進行訪問,這些功能對提高和優化WEB服務器的安全性能是必不可少的方法。

 

文章來源:劉俊濤的博客

地址:http://www.cnblogs.com/lovebing

歡迎關注,有問題一起學習歡迎留言、評論。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM