Json_encode() 比 PHP 中的序列化更安全吗?

IS Json_encode() more secure than serialize in PHP?

我正在测试一个网站的漏洞。

该漏洞与 PHP 对象注入有关。

误用unserialize()可能会导致这些问题。

另外,我在php官方手册中发现了如下警告:

他们建议我们应该使用json_encode()json_decode()

但是,我想知道为什么 json_encode()json_decode()serialize()unsrialize() 更安全?

区别在于serialize存储的是一个对象。如果您在反序列化之前更改字符串的内容,您可以欺骗系统 运行 恶意代码。

使用 json_* 函数,您不存储对象,只存储数据。在 "unpacking" 之后,必须从原始来源实例化对象,然后才能提供 json_decoded 数据进行处理。