asp.net - TinyMCE、AntiXSS、MVC3 和 GetSafeHtmlFragment

标签 asp.net asp.net-mvc-3 tinymce xss antixsslibrary

我已经阅读了很多关于 XSS 和如何处理的关于 SO 的帖子。通常,共识是白名单而不是黑名单,避免使用正则表达式(太多变体无法处理)。

我正在开发一个 ASP.Net MVC3 应用程序。我需要能够显示来自用户条目的 HTML(例如

  • 等...),但我不希望有任何 XSS 风险。

    我正在通过 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/

相关文章:

javascript - 如何使用 TinyMCE 粘贴插件允许 HTML 标签?

django - d3js 返回 "[object%20Object]"和 "Uncaught TypeError: Cannot read property: nodes of undefined"

javascript - WordPress插件tinymce冲突

asp.net - '找不到方法 : !!0 AutoMapper.IMapper.Map<!0>(对象)'(ASP.NET 零)

asp.net - 不使用 MVC Controller 隐藏 http 文件扩展名

jquery - 如何从标题行 ID 获取 JQuery Accordion 的索引?

c# - Reader 不返回数据库中的所有行

asp.net-mvc - ASP.NET MVC 3 区分大小写的 URL

c# - Response.StatusCode 在 nunit 测试中为 null

html - 行不会选择 - MVC 3