我希望我的用户能够用 Markdown 写一篇文章,将它存储在 MySQL 数据库中(可以选择在将来编辑它),并显示给其他用户。
在实践中,这是我对其工作原理的理解:
输入
- 用户使用 Markdown 语法通过 HTML 表单输入
$queryInput = mysql_real_escape_string($userInput);
- 将过滤后的字符串插入数据库
输出
- 从数据库查询字段
$output = Markdown($queryResult);
- 显示
$output
是吗?
PHP Markdown 是否排除了对 htmlspecialchars
或 Pure HTML
的需要?
谢谢!
最佳答案
几周前我评估了 markdown 在 PHP 中的使用(顺便说一下,我决定不使用它)。我的想法:
每次呈现输出时都运行 markdown 解析器可能不是一个好主意 - 解析评论非常昂贵,而且通常的博客评论(作为示例)被阅读的频率远高于写入的频率。在将用户输入保存到数据库之前,您应该运行 markdown 解析器!
现在真正棘手的问题是:Markdown 本身不进行任何安全检查。所有的xss攻击都愉快的通过了。如果你现在认为“没问题,我会在获得用户输入后立即使用 strip_tags”,再想一想:Markdown 很可能在处理用户输入时创建包含 XSS 的标签。因此,您必须检查由 markdown 创建的 HTML 代码是否存在安全问题——这是一项非常艰巨的任务,而且很容易出错。 (这就是我没有使用它的原因—— yield 与潜在成本的比例不高)
关于php - 使用 Markdown 和 MySQL 时正确的操作顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2764381/