2016-08-25 3 views
1

私はウェブサイトの悪用をテストしていました。IS Json_encode()はPHPでシリアル化するよりも安全ですか?

この脆弱性は、PHPオブジェクト注入に関するものです。

unserialize()を誤って使用すると、これらの問題が発生することがあります。

warning

彼らは我々がjson_encode()json_decode()を使用する必要があることを示唆している:

また、私は以下のように公式のPHPマニュアルに警告を発見しました。

しかし、なぜjson_encode()json_decode()serialize()unsrialize()よりも安全であるのだろうと思いますか?

+1

'json_decode'は特定のクラス(stdClassのみ)にデコードせず、' unserialize'は行いません。 – tkausl

+0

いずれかの間に "セキュリティ"の違いはありません –

答えて

1

違いは、serializeはオブジェクトを格納することです。シリアル化を解除する前に文字列の内容を変更すると、悪質なコードを実行するようにシステムを欺くことができます。

json_ *関数では、データだけをオブジェクトとして保存することはありません。 「アンパック」すると、元のソースからオブジェクトをインスタンス化し、処理するためにjson_decodedデータのみを与えることができます。

+0

ありがとうございます。それは有用です~~ – Frank

関連する問題