前端防止xxs注入
思路:
去掉所有跟sql有关的标签:
$(function () { $(":input").change(function () { // alert($(this).attr('id')); removeHTML($(this).attr('id')); }) }) function removeHTMLTag(str) { str = str.replace(/<\/?[^>]*>/gi, ''); // 去除HTML tag str = str.replace(/[ | ]*\n/gi, '\n'); // 去除行尾空白 // str = str.replace(/\n[\s| | ]*\r/g,'\n'); //去除多余空行 str = str.replace(/ /ig, '');// 去掉 str = str.replace(/alert/gi, '');// 去掉alert; str = str.replace(/%3CSCRIPT/gi, '');// 去掉3CSCRIPT; str = str.replace(/input/ig, '');// 去掉input; str = str.replace(/iframe/ig, '');// 去掉iframe; str = str.replace(/window/ig, '');// 去掉window; str = str.replace(/link/ig, '');// 去掉link; str = str.replace(/location/ig, '');// 去掉location; str = str.replace(/JAVASCRIPT/ig, '');// 去掉JAVASCRIPT; str = str.replace(/update/ig, '');// 去掉update; str = str.replace(/insert/ig, '');// 去掉insert; str = str.replace(/select/ig, '');// 去掉select; str = str.replace(/[\[\]({!),:;?%<>"'}¨]/g, "");// 替换大部分英文标点 return str; } // 将传过来的参数去掉非法字符 function removeHTML(id) { debugger; var str = $("#" + id).val(); str = removeHTMLTag(str); $("#" + id).val(str); }
在使用ajax进行留言的时候,出现了一个问题.因为留言内容写完之后,通过ajax提交内容,同时使用js把留言的内容添加到页面上来.浏览留言的时候也是通过ajax请求,然后再显示的.这样,如果有人在留言里写入了js语句,这结语句都会被执行.解决办法就是对这些特殊字符进行转义再显示出来.如果在jsp中使用jstl标签,就很简单了.直接使用<c:out value=”${r.content}”/>这样就行了,会自动进行转义,其中省略了参数escapeXML=”true”,这是默认的.所以说在显示这些用户提交的内容的时候不要用el表达示,因为el不会自动进行转义,用c:out比较好.而如果也是通过ajax请求,然后再显示的,那就用下面的方法.其实也很简单.
1: var html="<script>alert('asdfasdf')<\/script>"; 2: $("#content").text(html); 那么会发生什么情况 解决办法很简单 就是把这些特殊字符进行转义也就是<变成<>变成> 使用jquery对字符进行转义就可以了 <head> <script> var html="<script>alert('asdfasdf')<\/scipt>"; html=$("#x").text(html).html(); $("#content").append("<div>"+html+"</div>"); </script> </head> <body> <span id="x" style="display:none"></span> <div id="content"></div> </body>
本文来自博客园,作者:喆星高照,转载请注明原文链接:https://www.cnblogs.com/houxianzhou/p/13563145.html
分类:
javascript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?