当前位置:  开发笔记 > 编程语言 > 正文

在asp.net mvc中处理javascript注入

如何解决《在asp.netmvc中处理javascript注入》经验,为你挑选了1个好方法。

我们如何在asp.net mvc(C#)应用程序中处理javascript注入?

我可以在我的视图中使用Html.Encode.但问题是我有html也在页面中显示像博客文章.

我需要删除在应用程序的输入元素中输入的脚本吗?我怎么能在一个共同的地方做到这一点?



1> Dan Herbert..:

这样做的"高级"最佳实践是:

将用户输入存储为输入系统的方式

HTML在任何页面上输出时对所有用户输入进行编码

使用白名单方法"解码"您在上一步中编码的允许的HTML字符,属性,属性值等

输出上的HTML编码用户输入将阻止JavaScript在您的站点上执行.

您希望将用户输入存储为"已输入"的原因是因为您可能在将来决定输出其他格式(PDF,电子邮件,JavaScript,RSS等)的用户数据,这些格式不具有相同的编码规则.因此,您应该尽可能保持数据尽可能接近原始格式.这将使以后更容易处理.

对于HTML编码用户输入,您可以使用System.Web.HttpUtility.HtmlEncode(...).

要结合步骤2和3,您可以使用Microsoft的AntiXSS库.它提供了一些额外的编码方法,HttpUtility类没有提供这些方法来使您的工作更轻松.直到Malcolm在评论中指出,我才意识到这个库的最新版本包含一个方法,该方法GetSafeHtmlFragment(...)将手动删除所有JavaScript.这将解决为您删除用户输入的JavaScript代码的所有繁重工作.您很可能想要使用 GetSafeHtmlFragment不是 GetSafeHtml,它旨在编码整个HTML文档.

次要注意事项:如果您发现功能无法正常工作,请阅读最新的AntiXss版本(撰写本文时的2012年1月)的评论.您可能需要考虑使用较旧的版本,具体取决于您的需求,但请注意旧版本中存在已知的安全缺陷.微软已经承认了这个问题并正在寻找解决方案.

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有