gpt4 book ai didi

php - 限制 unserialize() 返回数组?

转载 作者:行者123 更新时间:2023-12-02 06:43:44 25 4
gpt4 key购买 nike

有什么方法可以限制 PHP 的 unserialize() 只解析数组吗?出于安全原因。假设在我不想调用的反序列化对象中有一个邪恶的 __unserialize() 魔术方法!

最佳答案

Is there any way to limit PHP's unserialize() to only parse arrays? For security reasons. Suppose there is is an evil __unserialize() magic method in the unserialized object I don't wanna call!

据我所知,没有。

可以使用类似 this one 的函数找出序列化值的类型,但这对您也没有帮助,因为数组的任何成员都可能再次成为一个对象,其反序列化将触发 __wakeup() 调用。

您必须扩展该函数,以便它遍历序列化字符串的所有成员而不实际序列化它。当然可能,但可能会很笨拙和缓慢。

想到的唯一其他方法是在未定义类的环境中进行 unserialize() 调用。这将导致 __PHP_Incomplete_Class 类的损坏对象,然后您可以解析该对象。然而,在正常的脚本环境中,这对您没有帮助。

也就是说,永远不要忘记序列化对象永远不会包含任何代码。类定义必须通过其他方式出现在您的代码库中。

鉴于此,我不确定在什么情况下这首先会成为安全问题。如果您的代码库中有恶意代码,将有很多机会执行它而无需反序列化任何内容,不是吗?

关于php - 限制 unserialize() 返回数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3874744/

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