代码之家  ›  专栏  ›  技术社区  ›  Kevin Pang

防止XSS(跨站脚本)

  •  10
  • Kevin Pang  · 技术社区  · 17 年前

    假设我有一个简单的ASP。NET MVC博客应用程序,我想允许读者在博客文章中添加评论。如果我想防止任何类型的XSS恶作剧,我可以对所有注释进行HTML编码,使其在呈现时变得无害。但是,如果我想 一些 超链接、粗体、斜体等基本功能?

    我知道StackOverflow使用 WMD Markdown Editor ,如果不是因为它支持的事实,这似乎是我想要实现的一个很好的选择 两者 HTML和Markdown leaves it open to XSS attacks .

    7 回复  |  直到 5 年前
        1
  •  8
  •   Flory    17 年前

    如果你不想使用编辑器,你可以考虑 OWASP's AntiSamy .

    您可以在此处运行一个示例: http://www.antisamy.net/

        2
  •  3
  •   Gerrit    17 年前

    你打算支持多少HTML?只是粗体/斜体/基本内容?在这种情况下,您可以将这些转换为markdown语法,然后剥离HTML的其余部分。

    在存储之前,剥离需要在服务器端完成。在检查SQL漏洞和其他不需要的东西时,您还需要在服务器上验证输入。

        3
  •  2
  •   Mike Samuel    17 年前

    如果您需要在浏览器中执行此操作: http://code.google.com/p/google-caja/wiki/JsHtmlSanitizer

        4
  •  1
  •   Filip Dupanović    17 年前

    我建议你只提交markdown语法。在前端,客户端可以键入markdown并具有HTML预览(与SO相同),但只能在服务器端提交markdown语法。然后,您可以验证它,生成HTML,转义它并存储它。

    我相信我们大多数人都是这样做的。在任何一种情况下,markdown都是为了减轻任何人编写结构化HTML代码的负担,并为那些甚至不知道如何编写的人提供动力。

    如果你想对HTML做一些特定的事情,那么你可以用一些CSS继承“.ecomment a{color:#F0F;}”、前端JS来调整它,或者在存储之前通过解析markdown遍历生成的HTML。

        5
  •  1
  •   dr. evil    17 年前

    你为什么不使用杰夫的代码? http://refactormycode.com/codes/333-sanitize-html

        6
  •  1
  •   Community Mohan Dere    9 年前

    我会投票给 FCKEditor 但你必须做一些 extra steps 返回的输出 too .

        7
  •  0
  •   Community Mohan Dere    9 年前

    您可以使用HTML白名单,这样某些标签仍然可以使用,但其他所有内容都会被阻止。

    有一些工具可以为你做到这一点。SO使用 the code 那 Slough linked .

    推荐文章