对于我的帖子实体,我将 HTML 和 MARKDOWN 都存储在数据库中(HTML 是从 MARKDOWN 转换而来的)。HTML 用于在页面上呈现,MARKDOWN 用于编辑能力(使用 WMD)。我在存储到数据库之前对 HTML 进行了清理。问题是:我也应该清理降价吗?或者如果我只将它传递给 wmd-editor,它是 xss 安全的?
问问题
4045 次
3 回答
15
Markdown 可以包含任意 HTML;这是明确允许的。因此,在发送到 Web 客户端之前,您也应该对其进行清理,或者至少清理将其转换为 HTML 的结果。
我记得早期的 SO 可能的利用之一是您可以将 JS 内容放在 Markdown 中,并且无论谁编辑了您的文章,都会在预览中触发这些脚本。我不知道这是否已经修复。
于 2009-08-12T14:48:51.450 回答
3
我注意到您“在存储到 db 之前清理 HTML”并在下一句中谈到 xss-safe。这是输入验证的两个不同方面,您不应将它们混为一谈,并在您的设计中解决这两个方面:
您应该安全地将任何用户输入插入数据库,即确保输入正确转义(mysql_real_escape_string、存储过程、ORM 库等)
您应该安全地输出到 HTML / JS(包括输入到 WMD),删除或转义任何可能变成 XSS 漏洞利用和其他不愉快的序列。
至于这个问题,我同意 Chris 的观点——因为 Markdown 可以包含 HTML,所以必须对其进行清理。
于 2009-08-12T15:51:29.710 回答
0
只是一个补充:
这个问题来自使用 WMD
于 2009-08-13T01:05:37.410 回答