Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何安全地显示用户提交的html内容?_Javascript_Html_Security_Web - Fatal编程技术网

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

Javascript 如何安全地显示用户提交的html内容?,javascript,html,security,web,Javascript,Html,Security,Web,我正在使用stack overflow样式将图像和格式添加到帖子中[尽可能通过stack overflow post编辑工具],因此我为演示文稿生成了可用于在页面上显示的html 但问题是如何显示html,当我试图显示html时,它会打印在页面上,如“blah bhlah”。如何在我的网页上安全地转义此html内容?在您的案例中发生的是,html正在转义,因此呈现为文本 我不知道你是用什么语言写的,但我怀疑你使用了内置的文本转义功能。这会将HTML呈现为文本,但这不会使其安全 我怀疑您正在寻找的

我正在使用stack overflow样式将图像和格式添加到帖子中[尽可能通过stack overflow post编辑工具],因此我为演示文稿生成了可用于在页面上显示的html


但问题是如何显示html,当我试图显示html时,它会打印在页面上,如
“blah bhlah”
。如何在我的网页上安全地转义此html内容?

在您的案例中发生的是,html正在转义,因此呈现为文本

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

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

  • 解析HTML并对其进行清理,以删除任何潜在的恶意标记,如JavaScript、外部引用、iFrame等
  • 存储此经过消毒的HTML
  • 将输入作为页面的一部分呈现
  • ,您可能希望模拟所采用的方法

    这不是一个要解决的简单问题,您很可能希望找到一些框架来为您解决这个问题,而不是自己滚动

    例如,有人可能想利用以下漏洞攻击您的系统:

    • 附加的
      标记以转义包装元素
    • 某些字符组合可能看起来不像有效的HTML,但其行为却与之类似
    • 利用页面上已有的一些Javascript
    • 添加CSS以破坏页面布局

    这是一个两步过程。首先,您需要使用如下库对输入进行sanatize。它将删除脚本标签和其他人们可能尝试做的恶意事情


    然后需要显示原始输出。在Asp.NETMVC中,它是@Html.Raw(x=>x.SomePropertyThatIsHtml)。如果您使用的是其他内容,它应该有一个等价物来防止它被编码。

    此页面有一些您正在寻找的答案,您想打印HTML源代码(看起来像
    Foo
    ),还是想在页面中包含HTML(这样abobe将显示为标题“Foo”)?不清楚