我使用 Markdown 提供了一种简单的方法来在我的论坛脚本中向我的用户写帖子。
我正在尝试清理每个用户输入,但我对 Markdown 的输入有疑问。
我需要将降价文本存储在数据库中,而不是 HTML 转换版本,因为允许用户编辑他们的帖子。
基本上我需要像 StackOverflow 一样的东西。
我读了这篇关于 Markdown 的 XSS 漏洞的文章。我发现的唯一解决方案是在我的脚本提供的每个输出之前使用 HTML_purifier。
我认为这会减慢我的脚本速度,我想输出 20 个帖子并为每个帖子运行 HTML_purifier ...
所以我试图找到一种解决方案来清理 XSS 漏洞,清理输入而不是输出。
我无法在输入上运行 HTML_purifier,因为我的文本是 Markdown,而不是 HTML。如果我将它转换为获取 HTML,我将无法转换回 Markdown。
我已经删除(我希望)所有 HTML 代码:
htmlspecialchars(strip_tags($text));
我想过另一种解决方案:
当用户尝试提交新帖子时:将输入从 Markdown 转换为 HTML,运行 HTML_purifier,如果发现一些 XSS 注入,它只会返回错误。但我不知道怎么做,也不知道 HTML_purifier 是否允许。
我在那里发现了很多关于同一问题的问题,但所有解决方案都是将输入存储为 HTML。我需要存储为 Markdown。
有人有什么建议吗?