gpt4 book ai didi

javascript - 在脚本标签中嵌入 json 的安全方法

转载 作者:行者123 更新时间:2023-11-29 16:41:09 29 4
gpt4 key购买 nike

假设我的 html 文档中有以下脚本标签:

<script type="application/json" id="stuff">
{
"unicorns": "awesome",
"abc": [1, 2, 3]
}
</script>

我正在我的应用程序中解析这个 JSON。有人告诉我...

This method of embedding json in a script tag has a potential security issue. Assuming the json data originated from user input, it is possible to craft a data member that will in effect break out of the script tag and allow direct injection into the dom. See here:

<script type="application/json" id="stuff">
{
"unicorns": "awesome",
"abc": [1, 2, 3],
"badentry": "blah </script><div id='baddiv'>I should not exist.</div><script type="application/json" id='stuff'> ",
}
</script>

我需要在脚本标签中嵌入一个 JSON,但我不知道我应该怎么做,才不会泄露安全漏洞。

感谢您的帮助。

最佳答案

要在脚本元素中包含 JSON,则需要确保数据不能包含结束标记。检查任何键或值中的“<”是否编码为“\u003c”。然后使用 JSON.parse 解析内容。

您还需要确保各个字符串值的数据不会对字符串进行转义,因此也要对引号和反斜杠进行转义。

周围的上下文也可能导致问题,因为正确的编码可能取决于外部元素的嵌套。引号、html 实体、unicode 行和段落分隔符以及 CDATA 关闭标记可能需要编码。为了安全起见,您可以对任何非字母字符使用这些十六进制转义符。

你的服务器端语言应该有一些函数来像这样编码 JSON。但它们并非都是为安全而设计的,因此请确保它对所有这些字符进行编码。

关于javascript - 在脚本标签中嵌入 json 的安全方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45622468/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com