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

标签 php markdown

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

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

因为我听说 StackOverflow 使用它,所以我会尝试一下 Pagedown作为客户端验证器。

最佳答案

您需要投资 ca。一到两周的正确编码,并获得一些可以清理传入 HTML(通过 Markdown)的 tagsoup 解析器/处理程序。

我强烈建议使用三遍验证和处理方案:

  1. 混合模式:将作为 Markdown 文档一部分的 HTML 标签列入白名单。
  2. Markdown 解析器:将 Markdown 转换为 HMTL
  3. HTML 模式:将作为 HTML 文档的 HTML 标记列入白名单。

然后就可以输出了。存储 Markdown 源和“支持的”HTML 数据,这样您就不需要为每个显示操作都执行此操作。

关于php - 在 PHP 应用程序中正确使用 markdown,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13998894/

相关文章:

php - 成功登录后标题未重定向

r - 如何在rmarkdown2中为HTML和PDF输出编写度数符号?

javascript - 如何将 RTF 字符串转换为 Markdown 字符串(以及转换回来)(C# .NET Core 或 JS)

php - 如何使用 while 循环水平而不是垂直回显表 <tr>?

emacs - 在 Emacs 中编辑 Markdown 管道表

python - 将 Markdown 标题标签替换为 Python Markdown 中的自定义标签

django - 有没有办法改变 django-mdeditor 中的语言

php - 包含 php 数组键的 Mysql 查询? IE。 "WHERE profession = $user[' 职业']”

php - 用python加密数据,用php解密

php - 关联数据库中的2个表