PHP 7 - Filtered unserialize ()

PHP 7 memperkenalkan Filtered unserialize()berfungsi untuk memberikan keamanan yang lebih baik saat menghapus serial objek pada data yang tidak tepercaya. Ini mencegah kemungkinan injeksi kode dan memungkinkan pengembang untuk memasukkan kelas yang dapat dibatalkan serialnya ke daftar putih.

Contoh

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

Ini menghasilkan output browser berikut -

1
2