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