首页 > Web开发 > 详细

LAMP搭建14:Apache禁止解析PHP

时间:2017-01-16 23:16:28      阅读:260      评论:0      收藏:0      [点我收藏+]

我们的论坛设置的用户上传文件是存放在/data/www/data/目录下

技术分享

随便在我们的论坛上发个帖子,并上传一张图片

技术分享

我们来找找看这张图片具体存在哪里:

[root@centos6 data]# cd attachment/forum/

[root@centos6 forum]# ls -F

201701/

[root@centos6 forum]# cd 201701/

[root@centos6 201701]# ls -F

15/  index.html

[root@centos6 201701]# cd 15

[root@centos6 15]# ls

010620iksfhkkxvki105vd.jpg  index.html

可见用户上传的图片存放在

/data/www/data/attachment/forum/201701/15/010620iksfhkkxvki105vd.jpg

在浏览器可以直接查看到这张图片,如果没有设置防盗链也可下载到该图片。

技术分享

我们在/data/www/data目录下新建一个php文件

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

[root@centos6 data]# vim info.php

<?php

phpinfo();

?>

不做任何限制的时候,服务器默认是可以解析该PHP文件的,这里是显示服务器的配置,如果是用户上传的php木马或病毒,那么服务器就危险了。

技术分享

我们需要关闭PHP解析引擎:编辑Apache的虚拟主机配置文件,对网站根目录下的data目录关闭其php解析引擎,只需添加如下代码:

[root@centos6 apache2]# vim conf/extra/httpd-vhosts.conf

……

<filesmatch "(.*)admin(.*)">

Order deny,allow

Deny from all

Allow from 127.0.0.1

</filesmatch>

<Directory /data/www/data>

       php_admin_flag engine off

   </Directory>

<IfModule mod_rewrite.c>

RewriteEngine on

RewriteCond %{HTTP_HOST} ^www.aaa.com$ [OR]

RewriteCond %{HTTP_HOST} ^www.bbb.com$

RewriteRule ^/(.*)$ http://www.test.com/$1 [R=301,L]

</IfModule>

……

检查无误后重新加载配置文件:

[root@centos6 apache2]# apachectl -t

Syntax OK

[root@centos6 apache2]# apachectl graceful

再去访问该文件:

技术分享

回车后直接把文件下载下来了

技术分享

再来禁止下载PHP文件:

[root@centos6 apache2]# vim conf/extra/httpd-vhosts.conf

……

<filesmatch "(.*)admin(.*)">

Order deny,allow

Deny from all

Allow from 127.0.0.1

</filesmatch>

<Directory /data/www/data>

php_admin_flag engine off

<filesmatch "(.*)php">

           Order deny,allow

           Deny from all

           Allow from 127.0.0.1

       </filesmatch>

</Directory>

<IfModule mod_rewrite.c>

RewriteEngine on

RewriteCond %{HTTP_HOST} ^www.aaa.com$ [OR]

……

检查无误后重新加载配置文件

[root@centos6 apache2]# apachectl -t

Syntax OK

[root@centos6 apache2]# apachectl graceful

再去访问,发现403,也没下载,实现了我们的目的

技术分享

使用curl命令测试,发现解析不出来PHP

[root@centos6 apache2]# curl -x127.0.0.1:80 www.test.com/data/info.php

<?php

phpinfo();

?>

这里也可以去掉Allow 127.0.0.1这条规则

[root@centos6 apache2]# vim conf/extra/httpd-vhosts.conf

……

<filesmatch "(.*)admin(.*)">

Order deny,allow

Deny from all

Allow from 127.0.0.1

</filesmatch>

<Directory /data/www/data>

php_admin_flag engine off

<filesmatch "(.*)php">

           Order deny,allow

           Deny from all

       </filesmatch>

</Directory>

<IfModule mod_rewrite.c>

RewriteEngine on

RewriteCond %{HTTP_HOST} ^www.aaa.com$ [OR]

……


LAMP搭建14:Apache禁止解析PHP

原文:http://rachy.blog.51cto.com/11428504/1892309

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!