Apache 多重后缀的问题解决.
<FilesMatch "\.php$">
SetHandler application/x-httpd-php
</FilesMatch>
这是一段php后缀的正则解析. 理论上讲是ok的. 仅支持.php的执行php代码.
但问题在于, apache环境不仅仅是只有php, 还有jpg, cgi, css, js等. 难道每个后缀都如此设置? 显然是复杂了.
经过测试, 假如你命名为如下代码, 均会有安全问题.
a.jpg.xx
a.js.xx
a.css.xx
a.html.xx
均按最左边的后缀执行了.
##########################################
这的确是Apache的问题,
这也给开发人员定下了陷阱, 在处理上传文件时, 切记不要使用用户原始文件名.
我在这提供一种完全解决的方法:
首先在全局配置中禁止掉多后缀文件的访问.
<FilesMatch "\.[^\.]*\.[^\.]*$">
Order Allow,Deny
Deny from All
require all denied
</FilesMatch>
假如你有的vhost需要开放权限, 可以在vhost配置中加入
<FilesMatch ".*">
Order Deny,Allow
Allow from All
Require all granted
</FilesMatch>
来实现放开限购.
当然, 这种方式也属于下下策, 影响之处如有下.
目录列表时, 将无法显示多后缀文件.
END
Qampp 相关下载信息
Qampp APACE/PHP一键全系列环境包 | : 64位, 32位, | Qampp Qampp 兼容版(winXP, win2003等) | XP兼容版 |
数据下载由网络决定