如何安全地显示用户提交的html内容?

Raj*_*pta 6 html javascript security web

我正在做堆栈溢出样式添加图像和格式到帖子[尽可能通过stackoverflow帖子编辑工具],所以我有生成的可用于在页面上显示的演示文稿的html。

但问题是如何显示该 html,当我尝试显示 html 时,它会像"<html>blah bhlah</html>". 如何在我的网页上安全地转义此 html 内容?

Vas*_*iev 3

在您的情况下发生的情况是 HTML 被转义,因此呈现为文本。

我不知道你用什么语言编写,但我怀疑你使用了内置的文本转义功能。这会将 HTML 呈现为文本,但是这不会使其安全

我怀疑您正在寻找的解决方案将:

  1. 解析 HTML 并对其进行清理,以删除任何潜在的恶意标签,例如 JavaScript、外部引用、iframe 等。
  2. 存储这个经过净化的 HTML。
  3. 将输入呈现为页面的一部分。

StackExchange 仅支持 HTML 的严格子集,您可能想要模拟所采用的方法。

这不是一个简单的问题要解决,您很可能希望找到一些可以为您完成此任务的框架,而不是自行构建。

例如,有人可能想尝试针对您的系统进行一些攻击:

  • </div>用于转义包装元素的附加标签。
  • 某些字符组合可能看起来不像有效的 HTML,但无论如何都会表现出来。
  • 利用页面上已有的一些 Javascript。
  • 添加 CSS 来打破页面布局。