Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在innerHTML属性中防止XSS_Javascript_Security_Dom_Xss_Innerhtml - Fatal编程技术网

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, '&amp;')
                .replace(/"/g, '&quot;')
                .replace(/'/g, '&#39;')
                .replace(/</g, '&lt;')
                .replace(/>/g, '&gt;');
  }

  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,“
”);
查看更多提示