twitterこの広告は、90日以上更新していないブログに表示しています。uzullaがブログという記事を見ていて、エラーが発生した時に必ずエラーを表示する次のようなコードを見かけた。".PHP_EOL);}set_error_handler("strict_error_handler");これだと、スクリプト内で発生したエラーがdieで本番でも必ず表示される。開発環境でエラーを表示するのはいいが、これでは本番環境でもPHPのエラーが直接表示されてしまう。これは、XSSの可能性を残すのでセキュアではない。元記事だとCLIに限定するということは特に書いてなかったので一応指摘する。徳丸浩の日記という記事に書いてあるとおりだが、上のようなエラー処理を行っている場合には例えば次のようなコードのクエリにx=<script>alert(1)</script>を指定した場合、XSSが発生する。PHPで書いたコードを本番で運用する際には、display_errorsをoffにするのが定石なのにはこういう理由がある。冒頭で紹介したエラーハンドラを設定すると、display_errorsの値にかかわらず、必ずエラーが表示されてしまうため、セキュリティ上よろしくない。まともなフレームワークを使っていれば、このへんは勝手にやってくれるはずだが、フレームワークなどを使わずにエラー処理する場合には次のようなコードを記述するのが望ましい。}});set_error_handlerの中では、エラーをErrorExceptionに変換して投げている。これをやると、エラーメッセージが表示されるだけではなくスタックトレースも表示されるため開発時に役に立つ。set_exception_handlerでは、display_errorsディレクティブがonになっていれば普通に例外を表示するし、そうでない場合には固定のエラー画面を表示するようになっている。これであれば、display_errorsがoffになっている本番環境でも問題なく運用できる。»はてなブログをはじめよう!anatooさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。