gpt4 book ai didi

javascript - 如何使用 PHP JSON API 防止 JavaScript 平台中的 XSS?

转载 作者:行者123 更新时间:2023-12-01 02:41:58 25 4
gpt4 key购买 nike

我正在寻找一种在我的纯 JavaScript 平台中防止 XSS 的方法,该平台调用使用 json_encode() 返回 JSON 数据的 PHP API。

举这个基本的例子:

<script>alert('hello world');</script>

假设上面的内容存储在数据库字段中,该字段由 PHP 获取并使用 json_encode() 返回到浏览器:

<?php
echo json_encode(array('name'=>"<script>alert('hello world');</script>"), JSON_HEX_QUOT|JSON_HEX_TAG|JSON_HEX_AMP|JSON_HEX_APOS);
?>

如您所见,我使用了一些 json 选项,希望这能够清理数据以供 JavaScript 使用。但是,当我在 JavaScript 中执行以下操作时,警报仍然会执行:

<script>
$('.nameField').html(jsonData.name);
</script>

据我所知,json 选项是 json_encoded 数据的最佳实践,但它仍然可以执行。

我哪里出错了?

最佳答案

您看错了层。这里的威胁不是 JSON,而是 JSON 中的 HTML。 (JSON 层也可能存在威胁,您的问题中没有足够的信息来说明。)

如果您要将 JSON 回显为 <script>,您提供的选项看起来应该能够成功防止 XSS 攻击。元素,以便将其解析为数组文字。

...但这不是你正在做的事情。

您已完成未指定的操作,将解析后的 JSON 放入名为 jsonData 的变量中.

此时,任何特定于 JSON 的 XSS 保护都是无关紧要的。事情已经过去了。

您将从 JSON 中取出 HTML 并使用 jQuery 对其进行处理,然后将其注入(inject)到 DOM 中。

防范这种情况的方法是告诉 jQuery 它应该将其视为 HTML。

使用.text()方法而不是 .html()方法。

关于javascript - 如何使用 PHP JSON API 防止 JavaScript 平台中的 XSS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47512004/

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