[英]Do we still need to disable request validation when using Razor?
在ASP.NET MVC视图中,通常使用Razor的语法绑定模型值:
@Html.DisplayFor(m => m.Name)
我们知道Razor默认会对该值进行html编码。 但是,假设有一个恶意用户在文本框中输入脚本并提交脚本:
<script>alert('Executing evil script')</script>
现在,如果我们不使用[ValidateInput(false)]
或[AllowHtml]
属性,我们将被HttpRequestValidationException
[AllowHtml]
,这意味着每次用户提交表单时都必须捕获此异常。
从另一个stackoverflow 问题的答案中,我知道我们可以在应用程序级别禁用请求验证,但是许多人认为这是一种不好的做法。
我的问题是,鉴于我们有Razor可以逃避所有>
和<
,如果我们关闭请求验证功能,我们是否可以假设该站点仍然安全?
不,在Razor页面生成过程中仅依靠HTML编码并关闭请求验证并不是对抗XSS攻击的好策略:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.