3

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

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

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

4

2 回答 2

3

你需要投资约。一到两周的正确编码,并完成一些 tagoup 解析器/处理程序,可以清理传入的 HTML(通过 Markdown)。

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

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

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

于 2012-12-22T00:38:29.947 回答
2

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

通过 Markdown 解析器运行传入数据以获取 HTML,然后将其视为任何其他用户提交的 HTML(通过将白名单应用于元素和属性的 HTML 解析器传递它)。

于 2012-12-22T00:31:34.523 回答