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

Markdown和XSS

如何解决《Markdown和XSS》经验,为你挑选了2个好方法。

好吧,所以我在SO和其他地方一直在阅读关于降价的信息,用户输入和数据库之间的步骤通常给出为

    将markdown转换为html

    清理HTML(带白名单)

    插入数据库

但对我来说,做以下事情更有意义:

    清理markdown(删除所有标签 - 没有例外)

    转换为HTML

    插入数据库

我错过了什么吗?在我看来,这几乎是xss证明



1> Jordan Reite..:

请看这个链接:

http://michelf.com/weblog/2010/markdown-and-xss/

> hello  href="javascript:alert('xss')">*you*

hello you

∴ 转换为HTML 必须清理.



2> John Rudy..:

你提出的建议有两个问题:

    我没有看到您的用户能够格式化帖子的方法.例如,您利用Markdown提供了很好的编号列表.在提议的无标签 - 无异常的世界中,我没有看到最终用户将如何做这样的事情.

    更重要的是:当使用Markdown作为"原生"格式化语言,并将其他可用标签列入白名单时,您不仅限制了世界的输入端,还限制了输出.换句话说,如果您的显示引擎需要Markdown并且只允许白名单内容,即使(上帝禁止)有人进入数据库并将一些讨厌的恶意软件代码注入到一堆帖子中,实际站点及其用户也会受到保护因为你在展出时也要对它进行消毒.

网上有一些关于输出消毒的好资源:

消除用户数据:在何处以及如何执行此操作

输出消毒(我的一个客户,他将保持无名,其受影响的系统不是我开发的,受到这种确切的蠕虫攻击.当然,我们已经获得了这些系统.)

BizTech:最佳实践:从未听说过XSS?


至于第1点,我认为你误解了OP.你仍然会使用Markdown风格的编号列表,没问题,因为在*Markdown转换为1之前,HTML标签的删除会发生*.Foo`进入`
  • Foo `.
  • 推荐阅读
    kikokikolove
    这个屌丝很懒,什么也没留下!
    DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
    Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有