清理ASP.NET MVC应用程序中的输入

时间:2013-11-02 21:54:56

标签: asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 knockout.js

我有一个带有服务层的MVC应用程序,我正在试图弄清楚如何清理所有输入而不会疯狂。

我正在控制验证 - 在客户端和模型(EF5)上正在处理字段长度,数据类型和其他验证。

我现在要处理的是阻止SQL注入和XSS - 我能够通过将一些标记粘贴到我的输入中来破坏我的应用程序。

例如:

 <textarea data-bind="value: aboutMe">@Model.AboutMe </textarea>

如果我在AboutMe中保存了一些脚本标记:

<script type="text/javascript">alert("hey")</script>

由于非法字符导致页面中断:

  Uncaught SyntaxError: Unexpected token ILLEGAL 

我想我可以挑选每一个输入并将其包装在某种类型的SanitizeText()函数中,该函数从已提交的任何内容中删除所有括号,但这感觉便宜又乏味,并且不能解决SQL问题注射。

正确的方法是什么?

1 个答案:

答案 0 :(得分:4)

要解决XSS等问题,您应该使用例如正确编码输出。 Html编码 - 与您的输入相反。您可能还想查看反xss库http://wpl.codeplex.com/releases/view/80289,其中包含一些优秀的类来提供帮助。

要解决SQL注入问题,您应该使用SQL参数(参数化查询)http://msdn.microsoft.com/en-us/library/vstudio/bb738521(v=vs.100).aspx以及SQL服务器本身配置的适当权限。在您使用EF5时,我相信这也可以防止SQL注入。