【发布时间】:2015-01-05 12:22:10
【问题描述】:
在 ASP.NET MVC 视图中,通常使用 Razor 的语法绑定模型值:
@Html.DisplayFor(m => m.Name)
我们知道 Razor 默认会对值进行 html 编码。但想象一个恶意用户在文本框中输入脚本并提交:
<script>alert('Executing evil script')</script>
现在,如果我们不使用[ValidateInput(false)] 或[AllowHtml] 属性,我们将遇到HttpRequestValidationException,这意味着每次用户提交表单时都必须捕获此异常。
从另一个 stackoverflow question 的答案中,我知道我们可以在应用程序级别禁用请求验证,但许多人认为这是一种不好的做法。
我的问题是,鉴于我们有 Razor 可以转义所有 &gt; 和 &lt;,如果我们关闭请求验证,我们是否可以假设该站点仍然是安全的?
【问题讨论】:
-
鉴于有
Html.Raw我不确定 Razor 是如何决定使用或不请求验证的重要部分......它从来不是必需的,但如果你不期望它很有用邪恶脚本”作为输入。
标签: c# asp.net asp.net-mvc razor