lang/php

PHP7 Filtered unserialize() - 시리얼라이저 복구 필터링

C/H 2018. 8. 1. 08:30

시리얼라이저 복구

class MyClass1 { 
    public $obj1prop;   
}
class MyClass2 {
    public $obj2prop;
}

$obj1 = new MyClass1();
$obj1->obj1prop = 1;
$obj2 = new MyClass2();
$obj2->obj2prop = 2;

$serializedObj1 = serialize($obj1);
$serializedObj2 = serialize($obj2);

// 모든클래스 허용 옵션. 생략가능.
// allowed_classes 가 false 설정하면, 모든 객체를 into __PHP_Incomplete_Class 오브젝트로 반환한다.
$data = unserialize($serializedObj1 , ["allowed_classes" => true]);

// MyClass1, MyClass2 를 제외한 나머지 모든 객체를 __PHP_Incomplete_Class 오브젝트로 반환한다.
$data2 = unserialize($serializedObj2 , ["allowed_classes" => ["MyClass1", "MyClass2"]]);

var_dump($data->obj1prop);
var_dump($data2->obj2prop);

// 1
// 2


반응형