XSS是ASP的问题吗?NET MVC2和HTML文本框



我有一个使用ASP构建的内部网网站。. NET使用MVC框架2.0和Entity框架。

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

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

评论1

我只使用。net 3.5。我祈祷这将在未来更新一旦我离开Visual Studio 2008;)

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

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

以上是将Notes放到网页上的唯一方式。在服务器上,我做了类似(我省略了where语句)的事情:

var myStruct = (from u in myDB.dbSomeStruct
                select u).FirstOrDefault();
myStruct.Notes = Notes;
myDB.SaveChanges();

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

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

所以上面处理的是来自系统的输入。这同样适用于来自其他系统的输入;总是对它进行编码。除了您自己明确创建的数据之外,来自任何其他来源的数据都不可信。我发现从这个角度思考是缓解XSS的一个良好开端。

如果你在。net 4上使用MVC 2,那么使用<%: Data %>将使用默认编码器对Data进行HTML编码。如果你不使用。net 4,那么你需要使用<%= Html.Encode(Data) %>

最新更新