我有一些关于编码/转义字符的问题,以防止跨站点脚本(XSS)。
可以将用于HTML编码的相同字符编码用于JavaScript吗?例如..在HTML编码中,<
被编码为<
我是否可以将它用于JavaScript?是否有内置的JavaScript编码apis?
除了字符<
,>
,'
,"
,&
我应该考虑输出编码的其他字符吗?< / p>
答案 0 :(得分:1)
可以将用于html编码的相同字符编码用于javascript吗?
没有。 HTML不是JavaScript。
有没有内置的javascript编码apis?
问题标签中提到的唯一语言是JavaScript和HTML。你永远不应该从JS内部以编程方式生成JavaScript源代码(总有一种更好的方法可以解决问题,这是一种可能的解决方案)。
对于其他语言,JSON编码库通常是前进的方式。
如果您从JS生成HTML,那么再次,您不应该生成原始HTML。使用DOM(createTextNode
,createElement
,appendChild
和朋友)代替。
除了字符&lt; ,&gt; ,&#39; ,&#34; ,&amp;我应该考虑输出编码的其他字符
对于HTML文本节点和安全 HTML属性,您只需要担心这一点。
对于HTML中的其他地方,它取决于地点。
当您将URL作为用户输入并将其置于href
属性中时,保护XSS有其自身的一系列问题。
当您将用户输入置于onclick
属性(通常不是一个好主意)时,防止XSS会产生另一组问题。
答案 1 :(得分:0)
防止XSS系列攻击的编码取决于您注入用户提供的内容的上下文语法。如果您要将内容放入JavaScript源,那么不,您不能使用HTML转义,因为HTML语法与JavaScript语法完全不同。同样,如果您在HTML中包含用户提供的内容,则无法使用JavaScript语法来逃避它。
在JavaScript源代码中包含用户提供的内容的最佳方法可能是使用JSON编码工具。