水無月ばけらのえび日記

bakera.jp > 水無月ばけらのえび日記 > 不正データによる終了時のステータスコードで悩む

不正データによる終了時のステータスコードで悩む

2008年4月14日(月曜日)

不正データによる終了時のステータスコードで悩む

なぜPHPアプリにセキュリティホールが多いのか?【スクリプトインジェクション対策07】予期しないエラーが発生した場合,プログラムの実行を停止する (gihyo.jp)」。

「プログラムの実行を停止」というのは表現がおかしいと思いますが、要は処理を続行せずにエラー終了すべきということですね。

しかしこういうときに悩むのが、「どういうステータスコードで応答したら良いのか」ということ。普通に考えると500系のレスポンスになると思うのですが、501 (Not Implemented) では変ですし、503 (Service Unavailable) だと一定期間後に復活しそうに見えますし、他に使えそうなコードはないし……。というわけで、まあ素直に500 (Internal Server Error) で良いかなぁ……と思うわけですが。

ところがついこの前、とある案件にて、セキュリティ屋さんから「500応答はダメ」と言われて大ショック。「スタックトレースが表示されているからダメ」というのなら分かるのですが、その手の情報を何も出力していなくても、ステータスコード500が返っているだけでダメらしいのです。

そうなると400系? ……400系であえて挙げるなら403のような気がしますが、ものすごい違和感があります。

※社内ではその後「じゃあ 402 で」という意見が出たので、対抗して「いや、418 で」と言っておきましたが。

一般的にはこういうとき、どうしているのでしょう? 個人制作のフリーのCGIプログラムのようなものだと、エラー時でも200で応答したりすることがありますが、さすがにそれはちょっと……。

関連する話題: セキュリティ / HTTP

最近の日記

関わった本など

インクルーシブHTML+CSS & JavaScript 多様なユーザーニーズに応えるフロントエンドデザインパターンデザイニングWebアクセシビリティ - アクセシブルな設計やコンテンツ制作のアプローチコーディングWebアクセシビリティ - WAI-ARIAで実現するマルチデバイス環境のWebアプリケーション体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践ウェブの仕事力が上がる標準ガイドブック 5 WebプログラミングWeb Site Expert #13Dreamweaver プロフェッショナル・スタイル [CS3対応] (Style for professional)

その他サイト