为什么验证请求取自ASP.net MVC?

ale*_*mac 5 xss asp.net-mvc

在标准的ASP.net应用程序中,ASP.net提供了一些针对XSS攻击的保护,如果有人尝试,则使用validateRequest投掷检测危险的输入错误.这个功能似乎已经从MVC中取出了任何想法为什么?

Sru*_*uly 7

我知道这个问题已经过时但我认为无论如何我都能回答它.

有一个ValidateInput操作过滤器属性,可以添加到操作中.

[ValidateInput(true)]
public ActionResult Foo()
{

}
Run Code Online (Sandbox Code Playgroud)

您还可以在模型属性上使用AllowHtml属性

public class MyModel
{
    public Guid ID { get; set; }

    [AllowHtml]
    public string SomeStringValue { get; set; }
}
Run Code Online (Sandbox Code Playgroud)


Tim*_*uri 4

这是一条很难跨越的线。您的 Web 应用程序只是“应该”那样的 RESTful Web 资源吗?或者说它正在尝试做更多事情。接下来您知道您有 100 个隐藏输入字段:__VIEWSTATE、__EVENTTARGET、__EVENTARGUMENT 等。

如您所知,您仍然可以在 MVC 中防止 XSS 攻击。只要谷歌一下就能看到几个例子。但原因基本上是 MVC 是一种不同的、“更干净”类型的 Web 应用程序。

编辑:我不知道我上面说的是否清楚。但我们的想法是,MVC 不会尝试超越其本身(就像 ASP.NET 所做的那样)。他们都有自己的优点和理由。