对于我的文章实体,我在数据库中存储了HTML和MARKDOWN两种格式(HTML是由MARKDOWN转换而来)。HTML用于页面呈现,而MARKDOWN用于编辑能力(使用WMD)。我在将HTML存储到数据库之前进行了HTML清理。问题是:我是否应该对MARKDOWN进行清理?或者如果我只将其传递给wmd-editor,它是否已经安全防止了XSS攻击?
对于我的文章实体,我在数据库中存储了HTML和MARKDOWN两种格式(HTML是由MARKDOWN转换而来)。HTML用于页面呈现,而MARKDOWN用于编辑能力(使用WMD)。我在将HTML存储到数据库之前进行了HTML清理。问题是:我是否应该对MARKDOWN进行清理?或者如果我只将其传递给wmd-editor,它是否已经安全防止了XSS攻击?
Markdown可以包含任意的HTML;这是明确允许的。因此,在将其转换为HTML并发送给Web客户端之前,您应该对其进行过滤或至少对其进行过滤。
我记得在早期SO中可能存在的一个漏洞是,您可以在Markdown中放置JS内容,而编辑您的文章的人将触发预览中的那些脚本。我不知道这是否已经修复。
您应该安全地将任何用户输入插入到数据库中,即确保输入已正确转义(mysql_real_escape_string、存储过程、ORM库等)。
您应该安全地输出到HTML / JS(包括WMD的输入),删除或转义可以转换为XSS攻击和其他不良行为的任何序列。
至于这个问题,我同意Chris的观点-由于Markdown可以包含HTML,因此必须进行清理。