Apache服務器配置文件或目錄禁止訪問


在PHP網站開發中,為了讓網站目錄文件和程序代碼的安全考慮,我們必須對某些目錄或者文件的訪問權限進行控制,來提高網站的安全,那么我們怎樣來實現這種功能呢?因此很多時候我們需要禁止服務器上某個目錄或文件被訪問,主要是對Apache的配置文件進行操作,有兩種方法。
1.修改http.conf文件

(1).打開apache配置文件httpd.conf
(2).找到
<Directory />
Options Indexes
AllowOverride None
Order allow,deny
Allow from all
</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.
 Indexes 的作用就是當該目錄下沒有 index.html 或index.php文件時,就顯示目錄結構,去掉 Indexes,Apache 就不會顯示該目錄的列表了。
 
Apache單個或多個目錄禁止訪問方法
這種方法通常用來禁止訪問者訪問后台管理目錄或者程序目錄,方法如下
(1).打開apache配置文件httpd.conf
(2).創建Directory塊,比如禁止訪問某個類庫目錄,可以這樣實現
<Directory /var/wwww/inc>
    Order Deny,Allow
    Deny from all
</Directory>
上述代碼實現了禁止所有用戶訪問/var/www/inc目錄的功能。如要實現禁止訪問所有目錄中inc目錄的功能,只要將
更改為
<Directory /var/www/*/inc>
(3).重啟Apache服務器。即可。
 
其他說明
(1).只允許或禁止某個域名進行目錄訪問
<Directory /var/www/inc>
    Order Deny,Allow
    Deny from abc.com 
    Allow from apache.org
</Directory>
(2).只允許或禁止某個IP進行目錄訪問上述代碼實現禁止 abc.com域中主機訪問inc目錄,允許 apache.org域中主機訪問inc目錄的功能。
<Directory /var/www/inc>
    Order Deny,Allow
    Deny from 10.1.1.2
    Allow from 192.168.1.0/255.255.255.0
</Directory>
注意 :Allow from 192.168.1.0/255.255.255.0等同於Allow from 192.168.1或Allow from 192.168.1.0/24上述代碼實現禁止IP10.1.1.2訪問inc目錄,允許IP192.168.1子網中的主機訪問 inc目錄的功能。
 
2.添加.htaccess文件

上面那種方法在我的Mac下好像實現起來有問題,修改了httpd.conf文件之后重啟Apache,無法訪問任何本地網站鏈接了,應該還是修改有問題,還沒摸索出來。之后便使用了另外一個方法,其實我感覺這個方法更方便。如果只是想禁止某一個目錄或某個目錄下的文件,只需要在該目錄下新建一個.htaccess文件,然后輸入一些配置信息即可。
先說明一下什么是.htaccess文件,.htaccess是一個純文本文件,它里面存放着Apache服務器配置相關的指令。.htaccess主要的作用有:URL重寫、自定義錯誤頁面、MIME類型配置以及訪問權限控制等。主要體現在偽靜態的應用、圖片防盜鏈、自定義404錯誤頁面、阻止/允許特定IP/IP段、目錄瀏覽與主頁、禁止訪問指定文件類型、文件密碼保護等。.htaccess的用途范圍主要針對當前目錄。
這里我們就關注使用.htaccess文件來限制訪問某個目錄或該目錄下的文件。
 
(1).在進行.htaccess文件配置之前,需要先確定httpd.conf文件是否配置了允許.htaccess文件的作用。因為要使 apache 能夠正常的讀取.htaccess 文件的內容,就必須對.htaccess 所在目錄進行配置。
從安全性考慮,根目錄的AllowOverride屬性一般都配置成不允許任何Override,即:
< Directory /> 
AllowOverride None 
< /Directory>
在我本機Mac電腦上,由於使用1中的方法新增<Directory></Directory>導致錯誤,不知什么原因,應該是我還沒搞明白。因此我就修改了其原有的一個<Directory></Directory>,如下圖所示,將AllowOverride none 改為了 AllowOverride All,出於安全性考慮最好是想在哪個目錄下添加.htaccess文件就增加一個<Directory></Directory>,並配置目錄路徑,添加AllowOverride All。(這個還需后續摸索成功)在 AllowOverride 設置為 None 時,.htaccess 文件將被完全忽略。當此指令設置為 All 時,所有具有 “.htaccess” 作用域的指令都允許出現在 .htaccess 文件中。
 
還需要注明的是,在購買的阿里虛擬主機上,好像不必對httpd.conf進行配置,.htaccess文件即可生效?
 
(2).對httpd.conf配置完之后,便可以在需要設置訪問權限的目錄下新建一個.htaccess文件,添加相關的配置代碼即可。比如如果想禁止所在目錄以及其目錄下的所有文件訪問。可進行如下配置:
order allow,deny 
deny from all
如果只是想禁止所在目錄下的特定格式的文件可進行如下配置: 
<Files  ~ "\.(pdf|psd|zip|rar)$">
 Order allow,deny
 Deny from all
</Files>

輸入Files后的波浪線表示啟用“正則表達式”,簡單的寫法有:<Files *>,表示禁止訪問該目錄下所有文件。


免責聲明!

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



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