我希望我的用户能够在Markdown中写一篇文章,将其存储在MySQL数据库中(以后可以选择编辑它),并为其他用户显示。
在实践中,这是我对其工作原理的理解:
INPUT
$queryInput = mysql_real_escape_string($userInput);
输出
$output = Markdown($queryResult);
$output
PHP Markdown是否排除了对htmlspecialchars
或Pure HTML
?
谢谢!
答案 0 :(得分:2)
我在几周前评估了PHP中markdown的使用(顺便说一句,决定不使用它)。我的想法:
每次呈现输出时运行markdown解析器可能不是一个好主意 - 解析注释非常昂贵,并且通常的博客注释(作为示例)读取的频率远远超过写入。您应该在将用户输入保存到数据库之前运行markdown解析器!
现在真正棘手的问题是:Markdown本身不进行任何安全检查。所有的xss攻击都很愉快地通过。如果您现在认为“没问题,我只需在获取用户输入后立即执行strip_tags”,再想一想:markdown很可能在处理用户输入时创建包含XSS的标记。因此,您必须检查markdown为安全问题创建的HTML代码 - 这是一项非常容易出错的非常困难的任务。 (这就是我不使用它的原因 - 利益与潜在成本没有很好的比例)