在标准的 ASP.net 应用程序中,ASP.net 提供了一些针对 XSS 攻击的保护,如果有人尝试,则使用 validateRequest throwing 检测危险的输入错误。此功能似乎已从 MVC 中删除,知道为什么吗?
1820 次
4 回答
7
我知道这个问题很老,但我想我还是可以回答的。
有一个 ValidateInput 操作过滤器属性可以添加到操作中。
[ValidateInput(true)]
public ActionResult Foo()
{
}
您还可以在模型属性上使用 AllowHtml 属性
public class MyModel
{
public Guid ID { get; set; }
[AllowHtml]
public string SomeStringValue { get; set; }
}
于 2009-04-02T08:31:28.130 回答
4
这是一条难以跨越的界限。您的 Web 应用程序是否只是“应该”的 RESTful Web 资源?还是它试图做更多。接下来你知道你有 100 个隐藏的输入字段:__VIEWSTATE、__EVENTTARGET、__EVENTARGUMENT 等等。
如您所知,您仍然可以在 MVC 中防止 XSS 攻击。只需谷歌它就可以看到几个例子。但原因基本上是 MVC 是一种不同的、“更干净”的 Web 应用程序。
编辑:我不知道我上面所说的是否清楚。但这个想法是 MVC 不会试图超越它的本质(就像 ASP.NET 所做的那样)。他们都有自己的优点和理由。
于 2008-11-29T12:57:36.427 回答
2
无论如何,我希望你有比 ValidateRequest 更强大的东西来避免 XSS。
于 2008-11-29T13:20:47.880 回答
1
我发现 ValidateRequest 解决方案是一个 hack。在我看来,“避免 XSS”是一个业务规则;因此让模型处理这种情况。
我真的很喜欢关于希望更好地遵循 REST 原则的解释。至于100个隐藏字段,让我想起了我几年前提供的一个ASP解决方案;我使用大量隐藏字段来携带元数据。不漂亮。
于 2009-02-25T19:27:16.917 回答