测试子域名含特定URL参数返回403 Forbidden权限错误求助
解决测试子域名含
0desc参数触发403 Forbidden的问题 问题复现
测试子域名下,任何包含0desc(含URL编码后的%20desc)的URL都会返回403错误:
Forbidden You don't have permission to access this resource. Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.
即使是仅含一行“Hello”的静态文本文件,添加该参数后也会触发错误;同服务器的正式www子域名无此问题,两个站点为并行文件夹内的副本,%20asc等类似参数不受影响。
排查与解决方案
对比
.htaccess文件差异
直接拿测试站点和正式站点的.htaccess做对比,重点看是否存在针对0desc字符串的拦截规则:- 检查是否有类似
RewriteCond %{QUERY_STRING} 0desc [NC]+RewriteRule ^ - [F,L]的规则,这类规则会直接返回403 - 排查是否有
SetEnvIf或Deny指令限制包含该字符串的请求
- 检查是否有类似
检查服务器虚拟主机配置
查看测试子域名的虚拟主机配置文件(通常在/etc/apache2/sites-available/或/etc/httpd/conf.d/下),确认是否比正式域名多配置了安全规则:- 看是否单独给测试站点启用了mod_security规则,或者加载了不同的规则集
- 检查是否有
AllowOverride配置差异,导致测试站点的.htaccess规则生效范围不同
排查应用层安全拦截
如果站点基于CMS搭建,检查测试站点是否有安全插件(比如Wordfence、iThemes Security):- 查看插件的防火墙规则,是否把
0desc标记为恶意字符串拦截 - 检查自定义代码中是否有针对查询参数的过滤逻辑,比如PHP里判断
$_SERVER['QUERY_STRING']包含特定值就返回403
- 查看插件的防火墙规则,是否把
快速定位问题的临时操作
- 把测试站点的
.htaccess重命名为.htaccess.bak,重启Apache后测试请求,若恢复正常则问题出在该文件 - 若有权限,临时关闭测试站点的mod_security(通过虚拟主机配置添加
SecRuleEngine Off),测试是否还触发403,确认是否是WAF规则导致
- 把测试站点的
内容的提问来源于stack exchange,提问作者A1Dan
相关产品推荐
相关产品推荐

