我有一个带有服务层的 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 注入问题。
解决这个问题的正确方法是什么?