xss本质上就是浏览器解析html或者js脚本,那有什么方法可以不让他解析呢?
如果是直接在html中回显,兼用用<xmp>
标签即可,下面我们说一下js处理后赋值给html标签的方法。
代码如下:
function htmlEncode(html){
//1.首先动态创建一个容器标签元素,如DIV
var temp = document.createElement ("div");
//2.然后将要转换的字符串设置为这个元素的innerText(ie支持)或者textContent(火狐,google支持)
(temp.textContent != undefined ) ? (temp.textContent = html) : (temp.innerText = html);
//3.最后返回这个元素的innerHTML,即得到经过HTML编码转换的字符串了
var output = temp.innerHTML;
temp = null;
return output;
}
很简单吧,只要先用这个方法处理一下,就会把<>等这类符号转换掉。
测试结果如下: