PHP 7 - Lọc unserialize ()

PHP 7 giới thiệu Filtered unserialize()chức năng cung cấp khả năng bảo mật tốt hơn khi phi số hóa các đối tượng trên dữ liệu không đáng tin cậy. Nó ngăn chặn việc tiêm mã có thể xảy ra và cho phép nhà phát triển đưa vào danh sách trắng các lớp có thể chưa được công nghệ hóa.

Thí dụ

<?php
   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);

   // default behaviour that accepts all classes
   // second argument can be ommited.
   // if allowed_classes is passed as false, unserialize converts all objects into __PHP_Incomplete_Class object
   $data = unserialize($serializedObj1 , ["allowed_classes" => true]);

   // converts all objects into __PHP_Incomplete_Class object except those of MyClass1 and MyClass2
   $data2 = unserialize($serializedObj2 , ["allowed_classes" => ["MyClass1", "MyClass2"]]);

   print($data->obj1prop);
   print("<br/>");
   print($data2->obj2prop);
?>

Nó tạo ra đầu ra trình duyệt sau:

1
2