Linux
限制瀏覽器訪問 httpd.conf 中 PHP 腳本的一個 IP 地址
我的目標是只允許 IP 1.2.3.4 執行 /dir1/hello-php.php 腳本。
“開箱即用” AWS EC2 linux 2 apache 2.4.39(僅進行以下更改)、PHP 5.7.26,並在 Windows 10 上使用 Firefox 70.0 64 位。php.conf 也具有預設設置。
腳本 .. /dir1/hello-php.php 和 /dir1/hello-html.html
Apache httpd.conf 和 php.conf 有預設設置,包括 ..
<Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride None Require all granted
<Files ".ht*"> Require all denied
現在,我將 httpd.conf 更改為 ..
<Directory "/var/www/html/dir1"> AllowOverride None <Files "*.php"> Require ip 1.2.3.4 </Files>
從火狐..
https://www.website.com/dir1/hello-php.php給出“禁止:您無權訪問此伺服器上的 /dir1/hello-php.php。” 但是.. https://www.website.com/dir1/hello-html.html 有效。
然後,如果我將指令更改為 ..
<Directory "/var/www/html/dir1"> AllowOverride None <Files "*.html"> Require ip 1.2.3.4 </Files>
然後 ..
https://www.website.com/dir1/hello-php.php 有效。但是.. https://www.website.com/dir1/hello-html.html 給出“禁止:您無權訪問此伺服器上的 /dir1/hello-html.html。”
這些結果回頭看,並沒有達到我的目標。
為了只允許 IP 1.2.3.4 成功執行 /dir1/hello-php.php 腳本,我在 httpd.conf 或 php.conf 中缺少什麼?
您可以禁止訪問整個目錄,只允許訪問指定的 IP:
<Directory "/var/www/html/dir1"> AllowOverride None Require ip 1.2.3.4
或者在你的例子中,你可以這樣做
<Directory "/var/www/html/dir1"> AllowOverride None <Files ~ "\.(html|php)$"> Require ip 1.2.3.4 </Files>
html也不是腳本