serialization - 当在 textarea 中输入打开 PHP 标记时,Jquery serialize() 触发 403
问题描述
所以我最近一直在检查我的表单以检查我的 SQL 查询是否安全以及清理任何输入,并且刚刚发现输入<?
文本框会在它到达处理文件之前触发 403,我只能假设它必须是与 mod_security 相关??
我的问题是,当我使用共享主机时,如果它由网络主机控制,是否不必担心。
解决方案
在对提交的变量使用 jQuery 的 .serialize() 函数后,我最近遇到了通过 GET 请求向服务器提交表单数据的问题。这些是多年来完美运行的网络应用程序。事实证明,在最近的 ModSecurity 规则集更新后,我在 Comodo 的 WAF 规则集中触发了 211700(HTTP 重定向)和 217280(走私攻击)规则,服务器与 ModSecurity 一起使用。我没有收到 403。我的 IP 地址被防火墙阻止了。:(
修复将我的 AJAX 代码切换为使用 POST 而不是 GET,而不是使用 .serialize()。我仍然有一些网络应用程序通过 AJAX 使用 .serialize() 和 GET 请求而不触发 ModSecurity,所以我相信传递可疑字符也是必要的,正如你所发现的,尽管在我的测试中,我使用的只是括号。
由于您在共享服务器上,因此可能不可能(或值得您花时间)找出主机使用的规则集,因此您最好的选择是最有可能将您的表单提交切换为使用 POST 而不是 GET ,而不是使用 .serialize()。我认为这些规则的存在是有原因的,更好的方法是避免让我的代码看起来像是在做一些邪恶的事情,而不是禁用这些规则。
推荐阅读
- python - 使用 FastAPI 读取正文 JSON 列表
- google-app-engine - 自动缩放时如何解决谷歌应用引擎延迟?
- javascript - 删除字符串开头和结尾的特殊字符
- javascript - 通过值
- reactjs - React.js:从 API 使下拉内容动态化
- c# - C# 8 版本中抽象类和接口的区别?
- javascript - 在数组任务中排序并返回差异,返回未定义
- android - Android 9 在使用 Retrofit multipart 上传图片时遇到问题?
- c# - dotnet ef - 要执行的应用程序不存在 C:\Users\
- date - 我需要将 pandas 中的日期时间序列从每秒简化到每天表示全天捕获的数据