文件上传类型限制,CMS后台禁止上传脚本

很多CMS后台默认允许上传多种文件类型,攻击者可能上传.php、.jsp等脚本文件,从而控制服务器。
本文针对“文件上传类型限制”这一需求,手把手教你在Apache、Nginx和PHP层面配置规则,禁止上传脚本文件,适合零基础运维和站长操作。

先判断你的Web服务器类型

不同服务器的限制方式不同,请先确认环境:

  • Apache:使用.htaccess文件或主配置文件httpd.conf。
  • Nginx:使用站点配置文件,通常在/etc/nginx/conf.d/或/etc/nginx/sites-available/。
  • PHP:使用php.ini中的upload_max_filesize和post_max_size,但禁止脚本主要靠disable_functions或文件类型检查。

如果使用宝塔面板,可在“网站”->“设置”->“配置文件”中直接编辑。

方法一:Apache下通过.htaccess禁止脚本上传

在网站根目录创建或编辑.htaccess文件,加入以下内容:


    Require all denied

这段规则会拒绝访问所有以这些后缀结尾的文件。
注意:如果上传目录需要允许图片等,请将规则放在上传目录的.htaccess中,而不是全局。

保存后,尝试上传一个.php文件,应返回403错误。

方法二:Nginx配置location匹配禁止脚本

编辑站点配置文件,在server块内添加:

location ~* \.(php|php5|phtml|jsp|asp|aspx|exe|sh)$ {
    deny all;
    return 403;
}

如果希望仅限制上传目录,可改为:

location ~* /uploads/.*\.(php|php5|phtml|jsp|asp|aspx|exe|sh)$ {
    deny all;
}

修改后执行nginx -t测试配置,然后nginx -s reload重载。

方法三:PHP层面限制上传类型

在php.ini中设置:

upload_max_filesize = 2M
post_max_size = 8M

但更关键的是在CMS代码中检查文件扩展名。
例如在保存上传文件前:

$allowed = ['jpg', 'jpeg', 'png', 'gif', 'pdf'];
$ext = strtolower(pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION));
if (!in_array($ext, $allowed)) {
    die('不允许的文件类型');
}

如果无法修改代码,可安装安全插件(如WordPress的“File Upload Type Restriction”)。

验证限制是否生效

配置完成后,进行以下测试:

  • 上传一个.php文件,应被拒绝并提示错误。
  • 上传一个.jpg文件,应成功。
  • 直接访问上传目录下的.php文件,应返回403。

如果测试失败,检查配置文件是否加载、语法是否正确,并查看服务器错误日志。

常见问题与避坑

问题1:上传图片时提示“文件类型不允许”
检查允许列表是否包含图片后缀,注意大小写。

问题2:Nginx规则不生效
确保location优先级正确,避免被其他规则覆盖。

问题3:CMS后台仍然能上传脚本
可能是CMS自身未做检查,需结合服务器层限制。

避坑:不要只依赖前端JavaScript验证,攻击者可绕过;
务必在服务器端实施限制。

总结

通过Apache、Nginx或PHP任一层面配置文件上传类型限制,即可有效禁止CMS后台上传脚本。
建议同时使用多种方式,并定期检查上传目录。
实际操作中,请根据你的服务器环境选择合适方法,修改前备份配置文件。
如果遇到问题,优先查看日志定位原因。

分享到:
上一篇
PHP8.2废弃函数,老CMS程序报错修复
下一篇
SQL注入手工测试,自查CMS网站漏洞
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意