LAMP 架构——限定某个目录禁止 php 解析
限定某个目录禁止 php 解析:应用于对静态文件目录或可写的目录进行优化设置,通过限制解析 / 访问权限来避免别恶意攻击,提高安全性。
步骤如下
编辑虚拟主机配置文件
[root@dl-001 111.com]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<Directory /data/wwwroot/111.com/upload>
php_admin_flag engine off
</Directory>
创建相应的目录
[root@dl-001 111.com]# mkdir upload
……
[root@dl-001 111.com]# ls upload/
123.php abc.jpg baidu.png
重载
[root@dl-001 111.com]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@dl-001 111.com]# /usr/local/apache2.4/bin/apachectl graceful
测试
[root@dl-001 111.com]# curl -x192.168.11.128:80 'http://111.com/upload/123.php'
<?php
echo "welcom to 123file";
?>
[root@dl-001 111.com]# curl -x192.168.11.128:80 'http://111.com/upload/baidu.png' -I
HTTP/1.1 200 OK
Date: Thu, 03 Aug 2017 04:47:16 GMT
Server: Apache/2.4.27 (Unix) PHP/5.6.30
Last-Modified: Thu, 03 Aug 2017 04:25:26 GMT
ETag: "e7a-555d1c5172a6c"
Accept-Ranges: bytes
Content-Length: 3706
Content-Type: image/png
说明: 在此访问 123.php 文件时直接显示源代码,即无法进行 PHP 解析,访问其他类型的文件没问题。
添加 PHP 访问限制
添加参数
[root@adailinux 111.com]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<Directory /data/wwwroot/111.com/upload>
php_admin_flag engine off
<FilesMatch (.*)\.php(.*)> //添加此参数
Order Allow,Deny
Deny from all
</FilesMatch>
</Directory>
说明: 如果只设置禁止 PHP 解析,用户访问 PHP 文件时会显示源代码,添加该参数可以避免用户看到服务器 PHP 源码,进一步提升安全性。
重载
[root@dl-001 111.com]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@dl-001 111.com]# /usr/local/apache2.4/bin/apachectl graceful
测试
[root@dl-001 111.com]# curl -x127.0.0.1:80 111.com/upload/123.php -I
HTTP/1.1 403 Forbidden
Date: Thu, 03 Aug 2017 12:28:49 GMT
Server: Apache/2.4.27 (Unix) PHP/5.6.30
Content-Type: text/html; charset=iso-8859-1
[root@dl-001 111.com]# curl -x127.0.0.1:80 111.com/upload/baidu.png -I
HTTP/1.1 200 OK
Date: Thu, 03 Aug 2017 12:29:25 GMT
Server: Apache/2.4.27 (Unix) PHP/5.6.30
Last-Modified: Thu, 03 Aug 2017 12:25:26 GMT
ETag: "e7a-555d1c5172a6c"
Accept-Ranges: bytes
Content-Length: 3706
Content-Type: image/png