PHPのjson_decode()はeval()とは対照的に安全ですか? eval()関数はコードを実行できますが、json_decode()も同様にコードを実行しますか?json_decodeセキュリティ
3
A
答えて
6
JSONはデータのみを表すことができるので、json_decode
はPHPコードを実行しません。
json_decode
の実装はバグがあり、任意の(バイナリで、唯一の)PHPコードの実行を許可することができます(例:buffer overflow)。比較的シンプルで広く使用されているコードのため、これは起こりそうもなく、PHPプログラムでは軽減するために行うことができません。
1
eval()とjson_decode()は2つの異なる機能ですが、なぜあなたはそれらが似ていると思いますかわかりません。 1つは文字列をPHPコードとして評価し、もう1つはJSON文字列をデコードします。 json_decode
を実行すると何も実行されません。
+1
おそらく、OPはJavascriptでeval()とPHPでeval()を混同している可能性があります。 Javascriptでeval()はJSONをオブジェクトに変換するPHPでjson_decode()を実行し、文字列を評価してコードとして実行できるようにします。 –
関連する問題
- 1. PHPは - json_decode
- 2. json_decodeのエラー
- 3. PHP 7.1 json_decode()undefined
- 4. PHPアクセスjson_decodeデータ
- 5. PHP json_decode backslash
- 6. json_decodeとメモリクリア
- 7. 読書JSON_decode -
- 8. )(json_decodeから
- 9. PHP json_decode()エラー
- 10. htmlspecialchars json_decodeを破る
- 11. Json_decodeリターンNULLがカール
- 12. PHPのjson_decode各値
- 13. json_decode - NULLを返す
- 14. json_decodeデータの損失
- 15. echo json_decode data in php
- 16. 乱数を返すjson_decode
- 17. xml相当のjson_decode関数
- 18. json_decodeの使い方は?
- 19. json_encodeとjson_decodeの使用
- 20. GoogleのフォントAPI/JSON/PHP/json_decode
- 21. PHP Json_decode多次元配列
- 22. json_decode()の無効な配列
- 23. Google辞書APIのjson_decode
- 24. json_decodeがnullを返す
- 25. PHP - NULLを与えるjson_decode
- 26. PHP json_decode表記の問題
- 27. PHP json_decodeがnullを戻します
- 28. Google Maps API json_decodeが動作しない
- 29. json_decodeがgodaddy hostingで失敗する
- 30. posterous site_id、php(preg_matchまたはjson_decode?)= no joy
+1のバグ。 PHPには良いセキュリティ履歴はありません。特に文字列ハンドラの多くは任意のメモリアクセスを許可しています。 Exploitable PHP functions http://stackoverflow.com/questions/3115559/exploitable-php-functions/3451100#answer-3697776の質問の情報を参照してください。 5.2.9未満のPHPバージョンでは、悪質な攻撃者がjson_decode()を使用してサービス拒否を引き起こす可能性があります。 CVE 2009-1271を参照してください。http://osvdb.org/52486 完全に信頼できないデータについては、私はいつも自分自身で少なくとも完全な形式の検証を試みます。 – Cheekysoft
これは有用な答えではありません。問題は 'json_decode'がバグで、任意のコードを実行できるかどうかということです。あなたはその質問に答えなかった。 –
D.W. OPが明示的に否定的な例(任意のコード実行、任意の* php *コードの実行を可能にすることを意図したものではない)として明示的に言及したので、彼はPHP実装でバグを考慮しなかったと思う。また、あなたのコメントを完全に誤読していない限り、この答えの2番目の段落は、「json_decodeがバグかもしれないし、任意のコードの実行を許可するかどうか」と正確に答えます。私はこの答えを明確にするために何が改善できるか困惑している。ヒントを教えてもらえますか? – phihag