gpt4 book ai didi

javascript - 这样做安全吗? PHP 的 json_encode 和 javascript

转载 作者:可可西里 更新时间:2023-10-31 23:50:45 24 4
gpt4 key购买 nike

我一直在寻找有关在 javascript 上下文中使用 PHP json_encode 的安全问题,但我对结果并不完全满意

我收到了很多关于这样做的警告,但他们总是假设我要将数据从 json_encode 对象直接注入(inject)到 HTML 而根本没有任何类型的清理

所以,我想知道这个而且只有这个小片段是否存在任何安全问题(比如 xss 攻击等)

<?php 
$obj = isset($_POST['js']) ? json_encode($_POST['js']) : false;
if ($obj === false) $obj = '{}';
?>
<script>var x = <?php echo $obj ?>;</script>

编辑:
更改了代码段以处理返回 false 的 json_encode

最佳答案

用那一行代码

var x = <?php echo $obj ?>;

...服务器应用程序回显通过“js”键提交给它的数据。发送它的客户端将接收它,因此如果它在某种程度上是恶意的,将由同一个客户端处理后果。

实际发送到服务器实际上是链中无关的部分:如果有数据要提交,也可以直接将其分配给变量 x 而无需服务器的干预(例如通过浏览器的开发工具)。

如果在 PHP 中您使用数据来操作服务器数据库、调用服务或以其他方式更改应用程序的状态,并且您不会首先验证该数据,情况就会不同。

关于 json_encode 的使用:如果您确实验证了参数是有效的 JSON(通过检查返回值不是 false),它将产生一个有效的 JavaScript 对象文字。已知的不兼容情况(字符 U+2028U+2029)不会发生,因为默认情况下 json_encode 会转义这些字符。

关于javascript - 这样做安全吗? PHP 的 json_encode 和 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47405961/

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