asp.net-mvc – 在MVC应用程序中处理Rich Text
在Web应用程序中使用富文本的最佳做法是什么?我不想让自己容易受到脚本攻击.数据是否应该编码进入数据库,然后在显示回用户时进行解码?有关富文本编辑器的任何建议,可以处理诸如删除脚本标记或编码输入的标记之类的内容吗?
解决方法
您应该选择已知标记和属性的白名单,将用户输入解析为
XML,并删除不在白名单中的每个标记或属性.
编辑:请注意,如果您允许超链接或图像,则必须验证src和href标记.我建议使用System.Uri解析它,将方案限制为http,并将域限制到您的站点(取决于您希望用户能够做什么). 以前也做过类似的事情;谷歌他们. 编辑:例如,见this question 第二次编辑: 在将数据放入数据库之前,不应对数据进行编码.只要您使用参数(如果您不是,您真的应该这样做),数据库将完全不受您放入其中的任何内容的影响. 如果您的输入清理是安全的(参见上文),如果您对其进行编码并在途中解码它将没有任何区别,并且如果清理不安全,则编码将无济于事. 但是,通过标准XML解析器运行它,拒绝任何不解析的输入,并使用解析器中的格式化XML(如上所述)可能是个好主意. 第3次编辑: 那里有许多富文本编辑器;对于MVC,我想我会推荐FCKEditor.它会为你逃避输入,但你不能完全依赖它,因为攻击者可以禁用JavaScript或伪造自己的HTTP请求. (您仍然需要在服务器上验证HTML). Web表单有很多丰富的编辑器(我认为,它可以进行服务器端验证);没有任何MVC(尚) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – dropdownlist在页面重新加载时不会重置
- asp.net-mvc-3 – 我可以在ASP.Net MVC中使用OutputCache和
- 在ASP.NET Core 2.0 / Angular模板应用程序上发布失败
- 如何在ASP.NET MVC应用程序中组织JavaScript代码
- 在ASP.NET Web应用程序中忽略其他文化的全局资源
- asp.net-mvc-3 – 在IIS 7.5上托管MVC应用程序时显示完整的
- asp.net – 在Global.asax方法中将与Autofac注册的组件的相
- asp.net – 存储可变数据
- 三重报价?如何在ASP.NET中分隔数据绑定的JavaScript字符串
- asp.net-mvc – 使用Entity Framework 6和ViewModel从数据库