我一直在阅读一篇博客文章,我看到了一些说 JS Encoding Vulnerability 的内容。在下面的示例代码中,如果用户输入如下内容:
\x3cscript\x3e%20alert(\x27pwnd\x27)%20\x3c/script\x3e
,它说 JS 会将其呈现为 HTML,这对我来说看起来很奇怪。我试过了,他是对的。
@{
ViewBag.Title = "Home Page";
}
<h2 id="welcome-message">Welcome to our website</h2>
@if(!string.IsNullOrWhiteSpace(ViewBag.UserName)) {
<script type="text/javascript">
$(function () {
//ViewBag.Username value comes from Controller.
var message = 'Welcome, @ViewBag.UserName!';
$("#welcome-message").html(message).hide().show('slow');
});
</script>
}
我的问题是,为什么 Javascript 会自动解码已经编码的字符串?或者它确实有 jQuery 的html()
功能可以做到这一点?OP说使用Ajax.EncodeJavascriptString()
方法来解决这个问题。但是为什么我需要对已经编码的字符串进行编码呢?我检查了 jQuery 的网站,它没有提到任何类似的html()
方法。
如果您想查看整个博文,请访问此地址http://weblogs.asp.net/jgalloway/archive/2011/04/28/preventing-javascript-encoding-xss-attacks-in-asp-net- mvc.aspx