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 数据进行处理。
我正在测试一个网站的漏洞。
该漏洞与 PHP 对象注入有关。
误用unserialize()
可能会导致这些问题。
另外,我在php官方手册中发现了如下警告:
他们建议我们应该使用json_encode()
和json_decode()
。
但是,我想知道为什么 json_encode()
和 json_decode()
比 serialize()
和 unsrialize()
更安全?
区别在于serialize存储的是一个对象。如果您在反序列化之前更改字符串的内容,您可以欺骗系统 运行 恶意代码。
使用 json_* 函数,您不存储对象,只存储数据。在 "unpacking" 之后,必须从原始来源实例化对象,然后才能提供 json_decoded 数据进行处理。