1

是否有不同的方法来终止 JavaScript 中的字符串?

我正在测试服务器是否存在 XSS 漏洞,并且在 HTTP 响应中看到以下代码:

<script>
var myVar = "USER CONTROLLED STRING";
</script>

用户控制的字符串来自 URL,并且在生成响应之前删除了所有双引号。除此之外,所有其他字符都是允许的。

XSS 可能吗?

(而且,是的,我知道这里的正确做法是按照OWASP XSS 预防备忘单的建议对所有非字母数字字符进行十六进制编码(\xHH) ,但从我测试人员的角度来看,我想知道我是否可以利用这个。)

4

2 回答 2

3

A</script>表示脚本 元素的结束标记,无论生成的 JavaScript 代码是否有效。这是由于脚本元素所属的原始文本元素的内容受到限制:

原始文本RCDATA 元素中的文本不得包含任何出现的字符串“ </”(U+003C LESS-THAN SIGN,U+002F SOLIDUS),后跟不区分大小写地匹配元素标签名称的字符,后跟以下之一“制表符”(U+0009)、“LF”(U+000A)、“FF”(U+000C)、“CR”(U+000D)、U+0020 空格、“ >”(U+003E)或" /" (U+002F)。

于 2013-05-11T08:49:29.097 回答
3

是的,您可以执行攻击:http: //jsfiddle.net/vTmq6/1/

<script>
var myVar = "</script><script>alert('hacked');</script>";
</script>
于 2013-05-11T08:51:16.320 回答