【问题标题】:ASP.NET MVC 4 ViewModel - XSS Vunerabilities?ASP.NET MVC 4 视图模型 - XSS 漏洞?
【发布时间】:2013-08-15 10:33:33
【问题描述】:

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

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

我确实尝试过输入 alert("Hello");进入我的一个文本框输入,ASP.NET 正确地将其视为潜在危险,但我只是想确保我没有错过其他内容。

感谢您的任何建议。

【问题讨论】:

  • 这个问题做了一个奇怪的假设,即XSS与ViewModel的属性有关。 XSS 的发生是因为数据呈现给浏览器的方式存在缺陷(通常是它不是 HTML 编码的事实)。所以这是一个视图级别的事情。可以通过限制ViewModel的属性来敲除XSS,但我认为这样做是错误的地方。
  • 请原谅我对这些事情的无知,我对 Web 开发还比较陌生,所以仍然需要大量学习。我的意思是,如果我有一个填充 ViewModel 的各种属性的表单,然后将其存储在数据库中。我认为我可能需要“清理”输入的数据以避免存储任何不愉快的内容(因为数据将不可避免地在某个时候显示在另一个页面中)。我想也许我可能需要在存储之前检查每个 ViewModel 属性,而不是在数据显示在页面中时盲目存储和清理。
  • 是的,你可以这样做。我的观点是这是错误的方法(其他人可能不同意)。一方面,它使您在消除视图中的 XSS 点时不那么勤奋——可能还有其他方式可以利用这些点,如果可以在不往返数据库的情况下更改数据,或者如果有其他途径可以进入数据进入数据库。但主要是,在业务逻辑层解决表示层问题的想法让我感到很头疼。
  • 我知道你来自哪里,我更多地认为它是一种“腰带和大括号”的方法,以确保输入的任何数据都会被检查/清理以避免不良数据进入数据库,并且同样清理视图中呈现的任何内容

标签: asp.net-mvc xss


【解决方案1】:

默认情况下,Razor 会过滤除 @Html.Raw() 中的所有内容之外的所有内容。

阅读此article 以获取有关如何防止跨站点请求伪造的更多见解

【讨论】:

  • 谢谢,我认为可能是这样,但我不确定。
  • 链接重定向到无效的 URL。这是正确的 URL adamriddick.com/2013/04/…
猜你喜欢
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 2014-12-25
  • 2012-03-10
  • 2013-08-06
  • 2011-12-03
  • 2012-06-21
  • 1970-01-01
相关资源
最近更新 更多