unserialize filtr () w PHP
PHP 7 wzrosty mogą unserialize () zapewnia funkcje filtrowania, może zapobiec nielegalnemu wstrzyknięcia kodu danych, zapewnia bardziej bezpiecznych danych deserializowania.
Przykłady
Przykłady
<? Php
Klasa MyClass1 {
public $ obj1prop;
}
Klasa MyClass2 {
public $ obj2prop;
}
$ Obj1 = new MyClass1 ();
$ Obj1 -> obj1prop = 1;
$ Obj2 = new MyClass2 ();
$ Obj2 -> obj2prop = 2;
$ SerializedObj1 = serialize ($ obj1) ;
$ SerializedObj2 = serialize ($ obj2) ;
// Domyślne zachowanie polega na przyjmowaniu wszystkich klas
// Drugi parametr może być ignorowane
// Jeśli allowed_classes ustawiona na false, unserialize wszystkich obiektów zostaną zamienione na obiekt __PHP_Incomplete_Class
$ Data = unserialize ($ serializedObj1, [ "allowed_classes" => true]);
// Konwersja obiektów dla obiektów __PHP_Incomplete_Class oprócz MyClass1 i MyClass2
$ Dane2 = unserialize ($ serializedObj2, [ "allowed_classes" => [ "MyClass1", "MyClass2"]]);
print ($ dane -> obj1prop) ;
print (PHP_EOL);
print ($ dane2 -> obj2prop) ;
?>
Klasa MyClass1 {
public $ obj1prop;
}
Klasa MyClass2 {
public $ obj2prop;
}
$ Obj1 = new MyClass1 ();
$ Obj1 -> obj1prop = 1;
$ Obj2 = new MyClass2 ();
$ Obj2 -> obj2prop = 2;
$ SerializedObj1 = serialize ($ obj1) ;
$ SerializedObj2 = serialize ($ obj2) ;
// Domyślne zachowanie polega na przyjmowaniu wszystkich klas
// Drugi parametr może być ignorowane
// Jeśli allowed_classes ustawiona na false, unserialize wszystkich obiektów zostaną zamienione na obiekt __PHP_Incomplete_Class
$ Data = unserialize ($ serializedObj1, [ "allowed_classes" => true]);
// Konwersja obiektów dla obiektów __PHP_Incomplete_Class oprócz MyClass1 i MyClass2
$ Dane2 = unserialize ($ serializedObj2, [ "allowed_classes" => [ "MyClass1", "MyClass2"]]);
print ($ dane -> obj1prop) ;
print (PHP_EOL);
print ($ dane2 -> obj2prop) ;
?>
Wyjście powyżej wykonywanie programu jest:
1 2