我需要确认一下,您需要将这个提问翻译成中文吗?

14

对于我的文章实体,我在数据库中存储了HTML和MARKDOWN两种格式(HTML是由MARKDOWN转换而来)。HTML用于页面呈现,而MARKDOWN用于编辑能力(使用WMD)。我在将HTML存储到数据库之前进行了HTML清理。问题是:我是否应该对MARKDOWN进行清理?或者如果我只将其传递给wmd-editor,它是否已经安全防止了XSS攻击?

3个回答

16

Markdown可以包含任意的HTML;这是明确允许的。因此,在将其转换为HTML并发送给Web客户端之前,您应该对其进行过滤或至少对其进行过滤。

我记得在早期SO中可能存在的一个漏洞是,您可以在Markdown中放置JS内容,而编辑您的文章的人将触发预览中的那些脚本。我不知道这是否已经修复。


3
我注意到你在“存储到数据库之前清理HTML”,并在下一句谈到了xss-safe。这是两个不同的输入验证方面,你不应该混淆它们,并在设计中同时解决这两个问题:
  • 您应该安全地将任何用户输入插入到数据库中,即确保输入已正确转义(mysql_real_escape_string、存储过程、ORM库等)。

  • 您应该安全地输出到HTML / JS(包括WMD的输入),删除或转义可以转换为XSS攻击和其他不良行为的任何序列。

至于这个问题,我同意Chris的观点-由于Markdown可以包含HTML,因此必须进行清理。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接