javascript - Javascript 在 POST 表单之前替换 & 符号
问题描述
我正在尝试将一组书名传递回表单。通常在第二步中对数据进行清理,但是当任何标题在第一步中包含&符号时,我现在都会收到服务器错误。
<form id="addbsms" method="post" action="?action=addnewbooks&submit=validate" >
<Textarea name="newblist" rows="30" cols="68"></textarea>
<button type="submit" name="Submit" onsubmit="validateForm()">Submit</button>
</form>
我试图让 JS 在提交之前进行清理,但我的 JS 排骨不是很好:
<script>
function validateForm(){
let x= document.forms["addnewform"]["newmlist"].value;
return x.replace(/&/g,"and");
}
</script>
以及导致此问题的数据示例:
Cozy cottage & cabin designs : 200+ cottages, cabins, A-frames, vacation homes, apartment garages, sheds & more / Creative Homeowner|Creative Homeowner|2019|9781580118415 (paperback)|NONFICTION|20210813|
(标题|作者|出版年份|ISBN|类型|分类|添加日期|)
错误 Mod_security 显示:[Wed Aug 18 12:39:01.559409 2021] [:error] [pid 3772:tid 4255957415680] [client -redacted-] [client -redacted-] ModSecurity:警告。模式匹配 "(?i)(?:;|\\{|\\||\\|\\||&|&&|\\n|\\r|`)\\s*[\\(, @\\'\"\\s] (?:[\\w'\"\\./]+/|[\\\\'\"\\^] \\w[\\\\'\ "\\^] :. \\\\|[\\^\\.\\w '\"/\\\\] \\\\)?[\"\\^] (?:s[\ "\\^]*(?:y[\"\\^] s[\"\\^] (?:t[\"\\^]*e[\"\\^] m[\"\ \^](?:p[\"\\^]*r[\"\\^]*o[\"\\^]*p[\"\\^]*e ..." 在 ARGS:newblist。[文件 "/dh/apache2/template/etc/mod_sec3_CRS/REQUEST-932-APPLICATION-ATTACK-RCE.conf"] [行 "294"] [id "932115"] [msg "远程命令执行:Windows 命令注入"] [数据“匹配数据:|\x0d\x0aType R:在动荡的世界中蓬勃发展的变革性弹性/Ama Marston, Stephanie Marston|Marston, Ama|2018|9781610398060(精装本)|NONFICTION|20210813|\x0d\x0a终极指南:管道/ [主要作者,Merle Henkenius;特约作者,Steve Willson]|Henkenius,Merle|2021|9781580118613|NONFICTION|20210813|\x0d\x0a终极指南:管道 / [主要作者,Merle Henkenius;特约作者,Steve Willson]|Henkenius , Merle|2021|9781580118613|NONFICTION|..."] [严重性"CRITICAL"] [ver [hostname "-redacted-"] [uri "/pageinquestion.php"] [unique_id "YR1h1bWfXoy3zM7JSdfj8QAAAAE"],引用者:-fullurl-
解决方案
除非那个 esqew 试图为你辨别WHY(s)。由于在您上次的评论中您解释说您仍然想“预清洁”——我决定回答。
function validateForm(){
let x= document.getElementById("newblist").value;
var cleaned = x.replace(/&/g," and ");
console.log(cleaned);
return cleaned;
}
validateForm();
<form id="addbsms" method="post" action="?action=addnewbooks&submit=validate" >
<Textarea name="newblist" id="newblist" rows="30" cols="68"> This & That</textarea>
<button type="submit" name="Submit" onsubmit="validateForm()">Submit</button>
</form>
推荐阅读
- oracle - ORACLE 存储过程光标工作非常缓慢
- wordpress - woocommerce 基于产品输入的额外费用
- google-cloud-platform - 在 Stackdriver 日志中识别服务帐号的密钥 ID
- ssh - 实例存储已满后无法连接到 Google Cloud VM 实例
- jquery - 在单击内部 div 类名称时防止父标记
- python-2.7 - 如何使用 pyqt4 在表格小部件中禁用选择突出显示的绿色
- dialogflow-es - 如何使用聊天机器人显示餐厅菜单?
- python - 为什么 Python OpenCV 代码显示错误“NoneType”对象没有属性“__getitem__”?
- r - 用套索回归预测函数
- visual-c++ - 如何在 mFC VC++ 中将编辑控件的背景转换为透明?