使用Markdown&amp ;;时正确的动作顺序MySQL的?

时间:2010-05-04 10:09:52

标签: php mysql markdown sanitization

我希望我的用户能够在Markdown中写一篇文章,将其存储在MySQL数据库中(以后可以选择编辑它),并为其他用户显示。

在实践中,这是我对其工作原理的理解:

INPUT

  1. 使用Markdown语法通过HTML表单输入用户
  2. $queryInput = mysql_real_escape_string($userInput);
  3. 将已清理的字符串插入数据库
  4. 输出

    1. 来自数据库的查询字段
    2. $output = Markdown($queryResult);
    3. 显示$output
    4. 是吗?

      PHP Markdown是否排除了对htmlspecialcharsPure HTML

      的需求

      谢谢!

1 个答案:

答案 0 :(得分:2)

我在几周前评估了PHP中markdown的使用(顺便说一句,决定不使用它)。我的想法:

  • 每次呈现输出时运行markdown解析器可能不是一个好主意 - 解析注释非常昂贵,并且通常的博客注释(作为示例)读取的频率远远超过写入。您应该在将用户输入保存到数据库之前运行markdown解析器!

  • 现在真正棘手的问题是:Markdown本身不进行任何安全检查。所有的xss攻击都很愉快地通过。如果您现在认为“没问题,我只需在获取用户输入后立即执行strip_tags”,再想一想:markdown很可能在处理用户输入时创建包含XSS的标记。因此,您必须检查markdown为安全问题创建的HTML代码 - 这是一项非常容易出错的非常困难的任务。 (这就是我不使用它的原因 - 利益与潜在成本没有很好的比例)