【发布时间】:2010-10-21 06:23:19
【问题描述】:
有时,服务器端会生成嵌入到内联 JavaScript 代码中的字符串。例如,如果“用户名”应该由 ASP.NET 生成。然后看起来像。
<script>
var username = "<%UserName%>";
</script>
这是不安全的,因为用户可以将他/她的名字设为
</script><script>alert('bug')</script></script>
这是XSS漏洞。
所以,基本上,代码应该是:
<script>
var username = "<% JavascriptEncode(UserName)%>";
</script>
JavascriptEncode所做的就是在“/”和“'”和“””之前添加字符“\”。所以,输出的html是这样的。 var username = "alert(\'bug\')";
浏览器不会将“”解释为脚本块的结尾。所以,避免了 XSS。
但是,那里仍然有“”。建议也转义这两个字符。首先,我不认为将“" 到 ">"这里。而且,我不确定将“”更改为“\>”是否可以被所有浏览器识别。似乎没有必要对“”进行进一步的编码。
对此有什么建议吗?
谢谢。
【问题讨论】:
标签: javascript html xss encode