我有以下代码
nver+="<SPAN CLASS=focusField>"+text.substring(start,end)+"</SPAN>";
if(text.length>end)
nver+=text.substring(end,text.length);
results.innerHTML=nver.replace(/[\n]/g,"<BR>");
因此文本变量被篡改
textarea:ABCD"> < img/src='x'onerror=alert('XSS')>
首先text.substring(start,end)
输出'textarea'
text.substring(end,text.length)
剩下的:ABCD">< img/src='x'onerror=alert('XSS')>
如何对付此XSS?有什么方法可以使用createtextnode或一些功能来对付这个?如果是,我该如何使用createtextnode
?
答案 0 :(得分:2)
您需要对输出进行HTML编码
function htmlEscape(str) {
return String(str)
.replace(/&/g, '&')
.replace(/"/g, '"')
.replace(/'/g, ''')
.replace(/</g, '<')
.replace(/>/g, '>');
}
nver+=text.substring(end,text.length);
// HTML encode (i.e. escape the nver variable for correct output)
nver = htmlEscape(nver);
results.innerHTML=nver.replace(/[\n]/g,"<BR>");
查看DOM based XSS Prevention Cheat Sheet了解更多提示。