Jquery serialize() 在打开文本区域中输入的 PHP 标签时触发 403

Jquery serialize() triggering 403 when open PHP tag entered in textarea

所以我最近一直在检查我的表格以检查我的 SQL 查询是否安全以及清理所有输入并且刚刚发现在文本框中输入 <? 之前会触发 403它甚至命中了处理文件,我只能假设它必须与 mod_security??

有关

我的问题是,如果我使用的是共享主机,如果它由网络托管服务商控制,是否可以不用担心。

我最近 运行 在对提交的变量使用 jQuery 的 .serialize() 函数后通过 GET 请求向服务器提交表单数据时遇到了问题。这些是多年来一直完美运行的网络应用程序。事实证明,在最近一次 ModSecurity 规则集更新后,我触发了 Comodo 的 WAF 规则集中的 211700(HTTP 重定向)和 217280(走私攻击)规则,服务器使用 ModSecurity。我没有收到 403。我的 IP 地址被防火墙阻止了。 :(

修复方法是将我的 AJAX 代码切换为 POST 而不是 GET,并且不使用 .serialize()。我仍然有一些 Web 应用程序通过 AJAX 使用 .serialize() 和 GET 请求而不触发 ModSecurity,所以我相信也有必要传递可疑字符,正如您发现的那样,尽管在我的测试中,我使用的都是是括号。

由于您在共享服务器上,可能无法(或不值得花时间)找出主机使用的规则集,因此最好的选择是最有可能将表单提交切换到使用 POST 而不是 GET,并且不使用 .serialize()。我认为这些规则的存在是有原因的,更好的方法是避免让我的代码看起来像是在做一些邪恶的事情,而不是禁用规则。