Apache 多重后缀的问题解决.

分类
Qampp手册
更新时间
2019-02-22 14:54:28
<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



分享工作室[粤ICP备16004795号-2] 腾讯云 / 腾讯AI / 南沙新区 / 信用 0.014