比如说我们的网站目录/data/www下的data,由于apache的属主是daemon,而有时候我们需要写进一些东西放入/data/www下的data里,所以/data/www下的data就得赋予写权限,也就意味着这个data可以用daemon这个用户去写,如果你这个网站有漏洞的话,那被某一个人上传了一个***文件,它如果被执行怎么办?它这个文件就是一个***,结果不小心它一点执行了,执行完后发现你的服务器已经被***了,可以获得一些权限。那这个时候我们就应该做一些限制,要不你就不允许上传;要不就是即使它上传后我不做任何的操作;这两种情况,而第一种情况,你是不可以做的,因为你一旦限制了,任何的用户都不能正常地上传,这肯定是不合适的,那我们只能用第二种方法,去限制它进行解析,即使上传了一个***文件,但是它不能正常地去解析,那么也就意味着我们没有危险。怎么去限制呢?


那我们现在可以针对/data/www下的data目录做了一个限制,禁止解析

正常情况下,在/data/www/data/下创建一个info.php文件是可以正常访问的(做这个实验之前先把访问控制注释掉或者有冲突的)


## 进入data目录下并创建一个php的文件

[root@wy ~]# cd /data/www/data

[root@wy data]# vim info.php

<?php

phpinfo();

?>

## 访问刚刚创建的文件,是可以解析到的

WEBRESOURCE6ae71adccff146f19ac3e54e06172

## 但如果我们不想让解析data下的php文件

    <Directory /data/www/data>

       php_admin_flag engine off

       <filesmatch "(.*)php">

           Order deny,allow

           Deny from all

       </filesmatch>

    </Directory>

解释说明:

如果只把php的解析引擎关掉,虽不解析但会下载该文件或访问到源码,这样很不安全,所以需要做进一步限制访问操作。

<Directory /data/www/data> 针对此目录

php_admin_flag engine off 把php的解析引擎关掉,禁止解析

<filesmatch "(.*)php"> 限制访问

WEBRESOURCE903db2ee1df23b363d715cd805b79

## 检查并重新加载

[root@wy ~]# /usr/local/apache2/bin/apachectl -t

Syntax OK

[root@wy ~]# /usr/local/apache2/bin/apachectl graceful

##  再去访问就访问不到了

WEBRESOURCE847227d6c664a1ed986aa618183e8