标签:scipt fun col uml code ret asd func return
思路:
去掉所有跟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>
标签:scipt fun col uml code ret asd func return
原文地址:https://www.cnblogs.com/houxianzhou/p/13563145.html