在PHP应用程序中正确使用markdown

时间:2012-12-22 00:24:48

标签: php markdown

我在使用Markdown作为其语法的Web应用程序上工作,我面临的唯一问题是如何在服务器端验证用户输入,以便它实际上是Markdown而不是可以使用a注入的某些XSS攻击POST请求或禁用javascript。

我知道StackOverflow会这样做,但他们是如何做到这一点并允许某些HTML标签包括易受XSS攻击的图像?任何可以提供帮助的开源软件包(例如,赞赏)。

我听说StackOverflow使用它,我将尝试Pagedown作为客户端验证器。

2 个答案:

答案 0 :(得分:3)

你需要投资。一到两个星期的正确编码,并得到一些tagoup解析器/处理程序finsihed,可以清理崩溃的HTML(通过Markdown)。

我强烈建议采用三通验证和处理方案:

  1. 混合模式:白名单包含属于Markdown文档的HTML标记。
  2. Markdown Parser:将Markdown转换为HMTL
  3. HTML模式:作为HTML文档的白名单HTML标记。
  4. 然后您可以输出。存储Markdown源和“支持的”HTML数据,因此您不需要为每个显示操作执行此操作。

答案 1 :(得分:2)

Markdown允许任意HTML包含在其中。由于这包含<script>元素,因此您可以使用有效的Markdown,这也是一种XSS攻击。

通过Markdown解析器运行传入数据以获取HTML,然后将其视为任何其他用户提交的HTML(将其传递给应用a whitelist to the elements and attributes的HTML解析器)。