我正在测试网站的漏洞利用。
该漏洞是关于PHP对象注入的。
滥用unserialize()
可能会导致这些问题。
另外,我在官方php手册中发现了一个警告,如下所示:
他们建议我们使用json_encode()
和json_decode()
。
但是,我想知道为什么json_encode()
和json_decode()
比serialize()
和unsrialize()
更安全?
答案 0 :(得分:1)
不同之处在于serialize存储了一个对象。如果在反序列化之前更改字符串的内容,则可以欺骗系统运行恶意代码。
使用json_ *函数,您不存储对象,只存储数据。在“解包”时,必须从原始源实例化对象,然后才能给json_decoded数据进行处理。