这样做安全吗?PHP';s json_编码和javascript

这样做安全吗?PHP';s json_编码和javascript,javascript,php,html,security,Javascript,Php,Html,Security,我一直在搜索有关在javascript上下文中使用PHP json_编码的安全问题,但我对结果并不完全满意 我收到了很多关于这样做的警告,但他们总是认为我将从json_encode对象直接向HTML注入数据,而不进行任何类型的清理 所以,我想知道这一点,以及仅仅这一小部分是否会带来任何安全问题(如xss攻击等) var x=; 编辑: 将代码段更改为处理返回false的json_encode根据编码,它是正确的。但是,您必须验证变量x不应为空或过账值 <script>var x

我一直在搜索有关在javascript上下文中使用PHP json_编码的安全问题,但我对结果并不完全满意

我收到了很多关于这样做的警告,但他们总是认为我将从json_encode对象直接向HTML注入数据,而不进行任何类型的清理

所以,我想知道这一点,以及仅仅这一小部分是否会带来任何安全问题(如xss攻击等)


var x=;
编辑:

将代码段更改为处理返回false的json_encode

根据编码,它是正确的。但是,您必须验证变量
x
不应为空或过账值

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

var x=“有时json_encode返回false,如果返回则js表达式将中断。这将更安全

<script>var x = JSON.parse(<?php echo (json_encode($_POST["js"]) ? json_encode($_POST["js"]) : '{}'));</script>
使用该行代码解析()

var x = <?php echo $obj ?>;
varx=;
…服务器应用程序通过“js”密钥回显提交给它的数据。发送数据的客户端将接收数据,因此,如果在某种程度上是恶意的,将由同一客户端处理结果

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

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


至于
json\U encode
:如果您确实验证了参数是有效的json(通过检查返回值是否为
false
),它将生成有效的JavaScript对象文本。已知的不兼容情况(字符
U+2028
U+2029
)不会发生,因为默认情况下,
json\u encode
会转义这些字符。

不要使用“x”"变量全局。使用模块模式将其设置为私有变量。这不是安全问题,但是
json_encode
可以返回
false
,并且
echo
会将其作为空字符串输出,生成无效的JS语句。注意:您没有关闭
@trincot谢谢!修复了它!这甚至不起作用。您正在传递一个Object Literal to
JSON.parse
JSON.parse
需要一个字符串。但是如果引用
JSON\u encode
的输出,如果JSON字符串本身包含单引号,则会遇到问题。
var x = <?php echo $obj ?>;