Javascript 在innerHTML属性中防止XSS
我有以下代码Javascript 在innerHTML属性中防止XSS,javascript,security,dom,xss,innerhtml,Javascript,Security,Dom,Xss,Innerhtml,我有以下代码 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>"); nver+=''+文本。子字符串(开始、结束)+'; 如果(文本长
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>");
nver+=''+文本。子字符串(开始、结束)+';
如果(文本长度>结束)
nver+=text.substring(end,text.length);
results.innerHTML=nver.replace(/[\n]/g,“
”);
所以文本变量被篡改了
textarea:ABCD"> < img/src='x'onerror=alert('XSS')>
textarea:ABCD”>
第一个text。子字符串(开始、结束)
有输出'textarea'
和text.substring(end,text.length)
具有剩余的:ABCD“>![]()
如何对抗这个XSS?是否有某种方法可以使用createtextnode或某些功能来解决此问题?如果是这样,如何使用
createtextnode
?对输出进行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>");
函数htmlEscape(str){
返回字符串(str)
.更换(/&/g,“&;”)
.替换(/“/g,”))
.替换(/'/g'';'))
.替换(//g',);
}
nver+=text.substring(end,text.length);
//HTML编码(即转义nver变量以获得正确的输出)
nver=htmlEscape(nver);
results.innerHTML=nver.replace(/[\n]/g,“
”);
查看更多提示