在asp.net mvc中处理javascript注入
我们如何处理asp.net mvc(C#)应用程序中的javascript注入 我可以在我的视图中使用Html.Encode。但问题是,我在页面中也可以像博客文章一样显示html 我需要删除在应用程序的输入元素中输入的脚本吗?如何在一个普通的地方做到这一点?实现这一点的“高级”最佳实践是:在asp.net mvc中处理javascript注入,javascript,asp.net-mvc,javascript-injection,Javascript,Asp.net Mvc,Javascript Injection,我们如何处理asp.net mvc(C#)应用程序中的javascript注入 我可以在我的视图中使用Html.Encode。但问题是,我在页面中也可以像博客文章一样显示html 我需要删除在应用程序的输入元素中输入的脚本吗?如何在一个普通的地方做到这一点?实现这一点的“高级”最佳实践是: 按输入系统的方式存储用户输入 HTML对任何页面上输出的所有用户输入进行编码 使用白名单方法对上一步编码的允许HTML字符、属性、属性值等进行“反编码” 输出时对用户输入进行HTML编码将阻止JavaSc
- 按输入系统的方式存储用户输入
- HTML对任何页面上输出的所有用户输入进行编码
- 使用白名单方法对上一步编码的允许HTML字符、属性、属性值等进行“反编码”
GetSafeThmlFragment(…)
的方法,该方法将手动删除所有JavaScript,我才意识到这一点。这将为您处理删除用户输入的JavaScript代码的所有繁重工作。您很可能希望使用GetSafeHtmlFragment
和而不是GetSafeHtml
,这是为编码整个HTML文档而设计的
次要说明:如果您发现功能未如预期运行,请阅读最新AntiXss版本(撰写本文时为2012年1月)的评论。您可能想考虑根据您的需要使用旧版本,不过建议旧版本中有安全缺陷。 我已经有一段时间没听说过Anixss图书馆了,也不知道它现在在codeplex上。它有Javascript编码。我的理解是,如果想在Javascript中使用输入,就需要对Javascript进行编码。HttpUtility没有Javascript编码。所以每个项目都需要这个库,对吗?@Malcolm计划在JavaScript中使用编码用户输入的每个项目都应该有这个库。这是新的,看起来非常有用:AntiXss.GetSafeHtml(输入)。该方法有自己的html标记白名单。完美的在这篇文章中添加了警告注释,我正要开始使用AntiXSS,但幸运的是,我之前读过评论消息。根据最新版本的AntiXSS中出现的一些问题的评论,这个答案都是好的和可靠的。@Kallex在这里添加此注释作为注释是合适的,而不是编辑答案。