PHPフィルターアンシリアライズ()
PHP 7増加はアンシリアライズすることができるが()フィルタリング機能を提供し、それは不正なデータコードインジェクションを防ぐことができ、より安全なデシリアライズデータを提供します。
例
例
<?phpの
クラス MyClass1 {
公共 $ obj1prop。
}
クラス MyClass2 {
公共 $ obj2prop。
}
$ obj1に=新しいMyClass1();
$ obj1に- > obj1prop = 1;
$ obj2が=新しいMyClass2();
$ obj2が- > obj2prop = 2;
$ serializedObj1 =($ OBJ1)シリアライズ 。
$ serializedObj2 =($ obj2が)シリアル化 。
//デフォルトの動作では、すべてのクラスを受信します
// 2番目のパラメータは無視することができます
allowed_classesがfalseに設定されている場合//、アンシリアライズすべてのオブジェクトは、オブジェクトに変換されます__PHP_Incomplete_Class
$データ=アンシリアライズ($ serializedObj1、 [「allowed_classes "=>真]);
//すべてのオブジェクトはMyClass1とMyClass2に加えて、__PHP_Incomplete_Classオブジェクトに変換します
$データ2 =アンシリアライズ($ serializedObj2、 [「allowed_classes "=> [" MyClass1 "、" MyClass2 "]]);
印刷($データ- > obj1prop) 。
印刷 (PHP_EOL)。
印刷($データ2 - > obj2prop) 。
?>
クラス MyClass1 {
公共 $ obj1prop。
}
クラス MyClass2 {
公共 $ obj2prop。
}
$ obj1に=新しいMyClass1();
$ obj1に- > obj1prop = 1;
$ obj2が=新しいMyClass2();
$ obj2が- > obj2prop = 2;
$ serializedObj1 =($ OBJ1)シリアライズ 。
$ serializedObj2 =($ obj2が)シリアル化 。
//デフォルトの動作では、すべてのクラスを受信します
// 2番目のパラメータは無視することができます
allowed_classesがfalseに設定されている場合//、アンシリアライズすべてのオブジェクトは、オブジェクトに変換されます__PHP_Incomplete_Class
$データ=アンシリアライズ($ serializedObj1、 [「allowed_classes "=>真]);
//すべてのオブジェクトはMyClass1とMyClass2に加えて、__PHP_Incomplete_Classオブジェクトに変換します
$データ2 =アンシリアライズ($ serializedObj2、 [「allowed_classes "=> [" MyClass1 "、" MyClass2 "]]);
印刷($データ- > obj1prop) 。
印刷 (PHP_EOL)。
印刷($データ2 - > obj2prop) 。
?>
上記プログラム実行出力は、次のとおりです。
1 2