要求全部拒絕沒有效果。要求所有允許,工作
我有一個如下的網站結構設置,我試圖為每個組織組織訪問級別,但沒有指定
<Directory>
需要修復結構(也就是,如果我將其複製到不同的站點,複製到子文件夾中,則需要編輯所有 .htaccess 到新位置)。
- /app/ - 允許所有,拒絕配置/等
- /app/templates/ - 全部拒絕
- /app/templates/mytheme/ - 只允許圖像、javascript、css、字型
- /app/lib/ - 全部拒絕
我已經嘗試實現 Apache2.4 的新(ish)指令方案:
/etc/apache2/conf-enabled/security.conf
... more stuff above ... <Directory /> AllowOverride All Require all denied </Directory> ... more stuff below ...
並添加
Require all allowed
到.htaccess
應用程序的根目錄中,同時添加Require all denied
到.htaccess
我希望拒絕訪問的文件夾中。問題是
Require all denied
似乎什麼都不做。我已經看到使用該mod_auth_compat
庫或任何庫的參考,但似乎只有舊版本的 apache (v2.3) 才需要它。我在 Debian 8 上使用 Apache 2.4。
以前,我會提供:
Order Allow, Deny Deny from all
然後將以下內容放入需要訪問的文件夾中:
Allow from all
.. 並且我只需要允許特定的文件類型訪問,
<FilesMatch "\.(jpg|jpeg|gif|png|bmp|svg|css|less|sass|scss|js|ttf|woff|woff2|eot)$"> Allow from all </FilesMatch>
根據apache的文件,混合新舊聲明可能會產生意想不到的結果,因此,我只使用新聲明。沒有使用舊的權限聲明格式載入的雜散
.htaccess
文件或文件 - 所以這應該有效嗎?*.conf
鑑於我佈置的文件夾結構,以及在“/etc/apache2/conf-enabled/security.conf”中載入的內容(因為這是 AllowOverride 的“根”聲明的位置[指定時它似乎不起作用
AllowOverride All
在網站 conf ( 000-default.conf )] 中相同格式的聲明中,有人可以提供一些指導,或者最好是解決這個問題的方法。
Require
請參閱帶有指令範例的升級指南: https ://httpd.apache.org/docs/trunk/en/upgrading.html
Deny from all
就是現在Require all denied
Allow from all
就是現在Require all granted
情節扭曲:預設情況下,Apache 2.4 不授予對任何目錄的訪問權限,並且評估順序已更改。
在 apache 2.2 中阻止對文件系統的訪問是司空見慣的,正如您所寫的那樣,使用
Directory /
+ 。Require all denied
現在應該刪除它。如果它取代了子目錄中的權限,它將適得其反。請參閱有關合併身份驗證限制的文件。在實踐中它變得異常複雜。https://httpd.apache.org/docs/trunk/en/mod/mod_authz_core.html#authmerging
Require all granted
in在子目錄中的the/app
之前被評估。看起來 apache 在滿足第一個允許規則時授予訪問權限,因此它是允許的。整個樹都被父級的指令打開了,你對此無能為力。Require all denied``/app/lib
我的建議是不要混合公共和私人內容。在實踐中是完全無法管理的。如果它被送達,它意味著被送達。