【发布时间】:2018-10-27 18:59:15
【问题描述】:
我使用 MVC @Html.Raw 元素将 URL 保存到 javascript 变量中。但这会使我的 URL 容易受到 XSS 攻击。
如果有人将查询字符串设为:?budget=0-8";alert('a')//
我这样做:var url = "@Html.Raw("domain/?budget=0-8";alert('a')//")",它会在用户浏览器上提醒 'a'。
我怎样才能避免这种情况?
【问题讨论】:
-
1. 为什么首先使用
@Html.Raw()? 2. 限制您的输入类型:如果budget需要一个范围,则在控制器级别将其解析为 2 个ints,或使用int budgetStart和int budgetEnd。简而言之,不要让任意的string数据进入您的视图。如果您的操作方法需要string,请在到达视图之前将其解析为更严格的类型。 -
如果你使用
@Html.Raw(),你真的应该先清理输入。手动或查看一些外部库以提供帮助。 -
@haim770:我们正在使用@Html.Raw() 按原样传递查询字符串。如果我们不这样做,我们会得到编码字符。对于这种情况,@Html.Raw() 是否有任何替代方案?
-
@haim770:如果我使用 @HttpUtility.JavaScriptStringEncode("?budget=0-8";alert('a')//"),它会在这个字符串被编码时正常工作。但是这是正确的方法吗?
标签: asp.net-mvc xss