Asp.net mvc 2 ASP.NET MVC2和HTML文本框是否存在XSS问题?

Asp.net mvc 2 ASP.NET MVC2和HTML文本框是否存在XSS问题?,asp.net-mvc-2,xss,Asp.net Mvc 2,Xss,我有一个使用ASP.NET构建的intranet网站,使用MVC框架2.0版和实体框架 我感兴趣的数据之一是Notes。它以文本类型存储在数据库中。它是使用实体框架保存和加载的。它仅以文本框输入显示在web上。该数据根本不在服务器上使用 所以问题是,如果我关闭服务器上的验证,这是否会造成XSS危害。我是否需要在将笔记放入文本框输入之前对其进行编码 评论1 我只使用.NET3.5。我祈祷,一旦我离开VisualStudio2008,这将在将来得到更新;) 下面是我如何把笔记放到网页上的 <%

我有一个使用ASP.NET构建的intranet网站,使用MVC框架2.0版和实体框架

我感兴趣的数据之一是Notes。它以文本类型存储在数据库中。它是使用实体框架保存和加载的。它仅以文本框输入显示在web上。该数据根本不在服务器上使用

所以问题是,如果我关闭服务器上的验证,这是否会造成XSS危害。我是否需要在将笔记放入文本框输入之前对其进行编码

评论1

我只使用.NET3.5。我祈祷,一旦我离开VisualStudio2008,这将在将来得到更新;)

下面是我如何把笔记放到网页上的

<%= Html.TextArea("Notes", null, new { rows = "10", style = "width:100%" }) %>

XSS实际上可以归结为编码输出,即从服务器发送到页面上的内容

暂且不考虑其他类型的注入攻击(例如SQL注入),用户可以向您发送任何恶意创建的输入。现在,我不建议将输入以编码形式存储,因为您可能希望使用它做其他事情(比如将其放在web以外的另一种媒体中)。但是,当您将该输入作为对web请求的响应发送回时,请确保对其进行编码。可能只有一个用户可以看到响应中的输入是最初提供输入的原始用户,在这种情况下,您可能认为编码是不必要的。我建议将其编码为标准方法,因为您永远不知道应用程序功能何时会更改,其他用户现在可以看到该输入,然后突然,您就有了一个潜在的XSS漏洞

因此,上面讨论的是来自系统的输入。来自任何其他系统的输入也是如此始终对其进行编码。除了您自己显式创建的数据之外,来自任何其他源的数据都是不可信的。我发现从这个角度思考是缓解XSS的一个良好开端


如果您在.NET4上使用MVC2,那么使用
将使用HTML编码
数据。如果不使用.NET 4,则需要使用

如果要将输出放入文本框中,是否需要对数据进行编码?或者,当它被塞进文本框时,它可以被编码吗?
var myStruct = (from u in myDB.dbSomeStruct
                select u).FirstOrDefault();
myStruct.Notes = Notes;
myDB.SaveChanges();