JS eval() 和 XSS

问题描述 投票:0回答:1

如果我对不可信数据进行JS编码,并将其放入eval()函数中,例如这样:

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

这种情况下XSS怎么可能存在?

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

javascript eval xss
1个回答
0
投票

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

  1. "
    分隔的 JavaScript 字符串中
  2. '
    分隔的 JavaScript 字符串中
  3. 可能位于 HTML
    <script>
    元素内(如果未作为外部脚本加载)。

因此,您需要对数据调用最多三个不同的转义函数以确保其安全。也就是说,您真正需要 eval 的情况

真的很少。

© www.soinside.com 2019 - 2024. All rights reserved.