【发布时间】:2014-03-28 03:11:27
【问题描述】:
我有我的应用程序,安全测试团队向我报告了一个关于用户可能从我们的表单输入中注入恶意代码的错误。 该应用程序是在 ASP.NET MVC4、.NET 4.5 和 EF 5 中开发的。
正在测试的攻击与输入任何普通的 html 一样,但我的同事没有使用常规的 ,而是使用 < 和 >(之前字符的全角 unicode 版本:here for the full list)。 MVC 让这些字符通过,然后以某种方式,ORM 删除了字符的“宽”部分,并将标准和普通字符留在数据库中。不用说,如果在视图输出中没有正确编码,这些字符的检索和渲染可能会导致 XSS 漏洞。
我现在需要的是一种方法来清理并执行 所有 以应用程序中的 any 形式提交的字符串的 Normalize()。 有人告诉我创建一个自定义模型绑定器,但是在 BindModel 方法中我找不到修改字段的位置,所以稍后框架可以识别清理后的值并识别注入。
任何建议将不胜感激。
【问题讨论】:
-
据我了解,这对我不起作用,因为我不想允许或限制我可能从输入中获得的 HTML 的某些部分,我要做的就是规范化删除所有全角 unicode 的字符串,以便 MVC 内置验证器可以对真实字符做出反应,而不会被伪装的字符欺骗。
标签: c# asp.net-mvc asp.net-mvc-4 custom-model-binder unicode-normalization