Javascript 正确使用appendChild以避免XSS

Javascript 正确使用appendChild以避免XSS,javascript,xss,owasp,Javascript,Xss,Owasp,在执行XXS站点检查后,控制台中弹出的一个错误是内联使用Google Analytics Tag Manager所需的脚本。 现在,我已经创建了一个externalytics.js文件,我将其加载到头中,并创建了一个iLife来加载脚本,然后检查它是否在GA中工作(确实如此): 然后,我再次检查控制台是否有错误警告,并得到了一个警告,这是使用函数appendChild。 在阅读了一些之后,我了解到使用此方法可能有潜在的危险,并给出了一些如何使其更安全的示例,例如:如何使用setAttribute

在执行XXS站点检查后,控制台中弹出的一个错误是内联使用Google Analytics Tag Manager所需的脚本。 现在,我已经创建了一个externalytics.js文件,我将其加载到头中,并创建了一个iLife来加载脚本,然后检查它是否在GA中工作(确实如此):

然后,我再次检查控制台是否有错误警告,并得到了一个警告,这是使用函数
appendChild
。 在阅读了一些之后,我了解到使用此方法可能有潜在的危险,并给出了一些如何使其更安全的示例,例如:如何使用
setAttribute
方法。e、 g:

SAFE and FUNCTIONALLY CORRECT example

 var x = document.createElement("input");
 x.setAttribute("name", "company_name");
 x.setAttribute("value", '<%=Encoder.encodeForJS(companyName)%>');
 var form1 = document.forms[0];
 form1.appendChild(x);
安全且功能正确的示例
var x=document.createElement(“输入”);
x、 setAttribute(“名称”、“公司名称”);
x、 setAttribute(“值”,”;
var form1=document.forms[0];
表格1.附属儿童(x);
但它并没有说明当您不使用此方法时如何执行此操作。 例如,如何安全地设置
src
值?
最后,我想让我的生活不受XXS的影响。

由于服务器端模板和客户端代码的混合,所以在示例中需要编码。需要对引号进行转义以防止字符串文字被关闭,并在其后添加更多代码

所以如果
companyName
”;警报(1)//,然后:

x.setAttribute("value", '<%=companyName%>');

您的URL看起来像一个固定常量,因此不可能出现类似的情况,因此您的代码应该不会有问题。

这可能并不危险,但首先请向您展示代码。我正在考虑通过执行以下操作对URL进行编码:
var URL=”https://www.googletagmanager.com/gtag/js?id=UA-XXXXXX 1”;script.src=“”@Dan好吧,在这个例子中xss的风险为零(因为
url
不是动态的),这很好。我将把它传递给检查
x.setAttribute("value", '<%=companyName%>');
x.setAttribute("value", ''); alert(1);//');