JS eval()和XSS

时间:2015-06-08 21:46:20

标签: javascript eval xss

如果我JS编码不受信任的数据,并将其放入eval()函数,例如:

eval('var a="JS_ENCODED_UNTRUSTED_DATA";alert(a);');

在这种情况下,XSS仍然有可能吗?

编辑:澄清我的意思" JS编码":在Java中,我可以使用OWASP Java编码器为各种上下文编码不受信任的数据。例如Encoder.forHTML(UNTRUSTED_DATA)如果我将不受信任的数据插入HTML或Encoder.forJavaScript(UNTRUSTED_DATA),如果我将不受信任的数据插入JS。在将输入字符串插入HTML页面或JavaScript之前,它只是对输入字符串中的危险字符进行编码或转义。我不完全确定Encoder.forJavaScript函数如何编码每个字符,但我知道有些字符只是用' \'进行转义,有些则转换为\ xHH格式。

2 个答案:

答案 0 :(得分:0)

这取决于您如何转义“数据”。您的数据位于

  1. " - 分隔的JavaScript字符串
  2. ' - 分隔的JavaScript字符串
  3. 可能在HTML <script>元素内(如果没有作为外部脚本加载)。
  4. 因此,您需要在数据上调用最多三个不同的转义函数,以确保其安全。也就是说,really few cases您实际需要eval

答案 1 :(得分:0)

我在这里找到了答案:

https://www.owasp.org/index.php?title=JavaScript_Closure_Within_Eval&setlang=es

在该示例中,OWASP ESAPI库用于编码而不是OWASP Java Encoder Project,但这无关紧要。