我已经阅读了很多关于 XSS 和如何处理的关于 SO 的帖子。通常,共识是白名单而不是黑名单,避免使用正则表达式(太多变体无法处理)。
我正在开发一个 ASP.Net MVC3 应用程序。我需要能够显示来自用户条目的 HTML(例如 、、
我正在通过 Nuget 使用 AntiXSS 包。在我的模型中,我有[AllowHtml]
public string UserDetails{ get; set; }
在我看来,我将 TinyMCE 连接到了 textarea。
在我的 Controller 中,我从 View 中获取帖子并对其进行清理:using Microsoft.Security.Application;
...
string SanitizedDetails = Sanitizer.GetSafeHtmlFragment(model.UserDetails);
我的问题:我做对了吗?我是否受到了大多数 XSS 问题的保护,或者我是在吠叫错误的树吗?
最佳答案
您被张贴在某些表格上。允许 html 是一项危险的操作,因此您正在尝试尽可能地减轻它。你的方法在这里很好。
还有其他选项可以提供帮助,但不幸的是,并非一切都已准备好生产。
有各种浏览器部分支持的内容安全策略 header 。
前任:
http://www.w3.org/TR/CSP/
所以你所拥有的是体面的,但如果你想冒险进入内容安全策略,你可以稍微增强一下(对于一个)
如果您有兴趣,我会在这里讨论很多 XSS 攻击。
http://www.pluralsight-training.net/microsoft/Courses/TableOfContents?courseName=hack-proofing-dotnet-app
您可能希望在渲染之前(和保存之前)包含额外的清理,以防另一次攻击(例如 sql 注入(inject))将 xss 代码插入到您的 html 中。
关于asp.net - TinyMCE、AntiXSS、MVC3 和 GetSafeHtmlFragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10875458/