ModSecurity拦截网站外部链接跳转的原因是什么?
报错含义解释
该报错由OWASP ModSecurity核心规则集的920440号规则触发,本质是你站点的外部跳转链接配置错误间接导致的拦截:
你设置的Tiktok、Youtube跳转链接没有补全http:///https://协议头,浏览器会默认将这类无协议头的域名识别为你站点的相对路径,所以点击图标后实际发起的是对你站点https://getslim.guide/www.tiktok.com/@getslim.guide的请求,而非直接跳转至外部站。ModSecurity的920440规则用于禁止访问站点内后缀为敏感类型的文件,规则检测到请求URI的后缀为.com(属于规则预置的禁止后缀列表),直接判定为违规请求并拦截。
解决方法
优先通过修正跳转配置从根源解决问题,确实有特殊需求再调整WAF规则:
- 修正站点跳转链接配置:所有指向外部站点的链接必须补全
https://协议头,比如TikTok链接要完整填写为https://www.tiktok.com/@getslim.guide,Youtube链接同理补全协议头。修正后点击图标会直接跳转至外部站点,不会产生对你本站的相对路径请求,自然不会触发拦截规则,该方案无需修改WAF配置,安全性最高。 - 若确实需要保留无协议头的跳转逻辑,可针对性放行对应场景的规则,不要全局关闭920440规则(该规则用于防护攻击者窃取站点
.conf/.sql/.bak等敏感配置文件,全局关闭会留下严重安全隐患):- 若使用Plesk面板管理站点,可进入「网站与域名」-对应站点的「Web应用防火墙」设置页,找到ID为920440的规则,添加例外规则,仅匹配
/www.tiktok.com、/youtube.com这类请求路径即可。 - 若手动维护ModSecurity配置,可在自定义规则文件中添加如下配置,仅针对指定跳转路径放行规则:
SecRule REQUEST_URI "^/(www\.)?(tiktok|youtube)\.com" "id:10001,phase:1,nolog,allow,ctl:ruleRemoveById=920440" - 若使用Plesk面板管理站点,可进入「网站与域名」-对应站点的「Web应用防火墙」设置页,找到ID为920440的规则,添加例外规则,仅匹配
内容的提问来源于stack exchange,提问作者user16926422
相关产品推荐
相关产品推荐

