Asp.net mvc ASP.NET MVC 4视图模型-XSS漏洞?

Asp.net mvc ASP.NET MVC 4视图模型-XSS漏洞?,asp.net-mvc,xss,Asp.net Mvc,Xss,我目前正在开发一个ASP.NET MVC 4网站,对基础ViewModel的跨站点脚本(XSS)漏洞有疑问 我知道ASP.NET确实提供了一些请求验证,但是我还需要做什么来防止XSS攻击呢?一旦ViewModel的每个属性被发布回服务器,我是否需要使用AntiXSS来清理它们 我试过输入警报(“你好”);在我的一个文本框输入中,ASP.NET正确地捕捉到了它的潜在危险,但我只想确保我没有遗漏其他内容 感谢您提供的所有建议。默认情况下,Razor将对所有内容进行santize,除了@Html.Ra

我目前正在开发一个ASP.NET MVC 4网站,对基础ViewModel的跨站点脚本(XSS)漏洞有疑问

我知道ASP.NET确实提供了一些请求验证,但是我还需要做什么来防止XSS攻击呢?一旦ViewModel的每个属性被发布回服务器,我是否需要使用AntiXSS来清理它们

我试过输入警报(“你好”);在我的一个文本框输入中,ASP.NET正确地捕捉到了它的潜在危险,但我只想确保我没有遗漏其他内容


感谢您提供的所有建议。

默认情况下,Razor将对所有内容进行santize,除了
@Html.Raw()
中的内容


阅读本文以获得有关如何防止跨站点请求伪造的更多见解

这个问题提出了一个奇怪的假设,即XSS与ViewModel的属性有关。XSS的出现是因为数据呈现到浏览器的方式中存在缺陷(通常是因为数据未进行HTMLencoded)。所以这是一个视图级别的东西。可以通过限制ViewModel的属性来淘汰XSS,但我认为这是一个错误的地方。请原谅我对这些方面的无知,我对web开发还比较陌生,所以仍有很多学习。我的意思是,如果我有一个表单,它填充了ViewModel的各种属性,然后存储在数据库中。我认为我可能需要对输入的数据进行“消毒”,以避免存储任何不正常的内容(因为数据将不可避免地在某个时候显示在另一个页面上)。我想我可能需要在存储之前检查每个ViewModel属性,而不是在数据显示在页面中的后期盲目存储和清理。是的,您可以这样做。我的观点是这是错误的方法(其他人可能不同意)。首先,它使您在删除视图中的XSS点时不那么勤奋-如果数据可以在不往返数据库的情况下更改,或者如果有其他途径将数据输入数据库,则可能会有其他方法利用这些XSS点。但主要是,在业务逻辑层解决表示层问题的想法给了我很大的启发。我知道你来自何方,我认为它更像是一种“安全带和支架”方法,以确保对输入的任何数据进行检查/清理,以避免坏数据进入数据库,同样,也要清理视图中显示的任何内容谢谢,我假设可能是这样,但我不确定。链接重定向到无效的URL。这是正确的URL