如何用Javascript在POST提交表单前替换&符号解决Mod_security报错
解决方案
现有代码的错误点
- 事件绑定位置错误:
onsubmit是<form>标签的原生事件,不应该绑定在提交按钮<button>上 - 元素引用错误:你的表单ID为
addbsms,文本框字段名为newblist,旧代码里错误引用为不存在的addnewform和newmlist - 逻辑无效:旧代码仅返回了替换后的字符串,没有把处理后的值写回文本框,也没有正确控制表单提交逻辑
- 匹配范围不全:需要同时匹配原生
&和被自动转义的&两种格式的与符号
修正后的完整代码
表单部分
<form id="addbsms" method="post" action="?action=addnewbooks&submit=validate" onsubmit="return validateForm()"> <textarea name="newblist" rows="30" cols="68"></textarea> <button type="submit" name="Submit">提交</button> </form>
JS逻辑部分
<script> function validateForm() { // 正确获取文本框元素 const textarea = document.forms['addbsms']['newblist']; // 全局替换所有格式的&为and let processedContent = textarea.value.replace(/&(amp;)?/g, 'and'); // 将处理后的值写回文本框 textarea.value = processedContent; // 允许表单提交 return true; } </script>
补充说明
如果后续业务需要保留原始的&符号,可在服务端第二步数据消毒环节,再把对应位置的and替换回&即可。
内容的提问来源于stack exchange,提问作者aslum
相关产品推荐
相关产品推荐

