XSS和其他终止JavaScript字符串的方法

时间:2013-05-11 08:46:00

标签: javascript string xss

在JavaScript中终止字符串有不同的方法吗?

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

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

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

XSS可能吗?

(并且,是的,我知道在这里做正确的事情会按照OWASP XSS Prevention Cheat Sheet的推荐,对所有非字母数字字符进行十六进制编码(\ xHH),但从I测试者的角度来看,我想知道是否我可以利用这个。)

2 个答案:

答案 0 :(得分:2)

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

<script>
var myVar = "</script><script>alert('hacked');</script>";
</script>

答案 1 :(得分:1)

</script>表示脚本 element’s end tag,无论生成的JavaScript代码是否有效。这是由{em>脚本元素所属的restrictions on the contents of raw text elements所致:

  

raw textRCDATA elements中的文字不得包含任何字符串“</”(U + 003C LESS-THAN SIGN,U + 002F SOLIDUS),后跟字符大小写不敏感地匹配元素的标记名称,后跟“tab”(U + 0009),“LF”(U + 000A),“FF”(U + 000C),“CR”(U + 000D)之一, U + 0020 SPACE,“>”(U + 003E)或“/”(U + 002F)。