なぜPHPアプリにセキュリティホールが多いのか?
【スクリプトインジェクション対策07】予期しないエラーが発生した場合,プログラムの実行を停止する
ユーザ入力の単純エラー,
不正な入力を処理可能な値にフィルタ処理を行い,
正常な状態であればPHPのエラーイベントはまったく発生しないようにコーディングすべきです。正常な状態でエラーが発生しないようにコーディングされたプログラムでエラーが発生するのは,
PHPは,
エラー発生時にプログラムの実行を停止させるには,
対策のまとめ
- 通常の処理
(正常な入力) ではエラーが発生しないようなコーディングを行う - ユーザの入力ミス
(電話番号の入力ミス, 必須項目の記入漏れなど) 以外はすべて致命的なエラーとして取り扱う - エラーが発生した場合はプログラムの実行を停止する
- アプリケーション全体で対策できるよう例外/
エラーハンドラを定義する - エラー発生時に適切なエラーページが表示できるよう出力バッファを活用する
この記事に関連する書籍
-
Webアプリセキュリティ対策入門〜あなたのサイトは大丈夫?
本書は,Webサイトのセキュリティ確保のために必要な基礎知識と,安全なコードを書くために必要な基礎知識を解説しています。Webアプリケーションは比較的簡単に作成で...
-
はじめてのPHP言語プログラミング入門
Webアプリケーション構築ツールとしてPHPを取り上げた書籍は数多くありますが,言語の解説・入門書としての書籍はあまりありません。 本書は,プログラミング言語として...
バックナンバー
補講
- 【スクリプトインジェクション対策19】ユーザを教育する
- 【スクリプトインジェクション対策18】ログイン処理を正しく実装する
- 【スクリプトインジェクション対策17】パスワードを正しく管理する
- 【スクリプトインジェクション対策16】関連するサイトが利用しているドメイン名の一覧を提供する
- 【スクリプトインジェクション対策15】JavaScriptが無効なクライアントでも利用可能なサイトにする
- 【スクリプトインジェクション対策14】HTML,CSS,JavaScriptの生成はホワイトリスト方式を利用する
- 【スクリプトインジェクション対策13】不正な文字データを保存できないようにする
- 【スクリプトインジェクション対策12】データベースなど,内部データを信用しない
- 【スクリプトインジェクション対策11】エスケープしてはならないデータ以外はすべてエスケープする
- 【スクリプトインジェクション対策10】すべての入力値を可能な限り厳しい条件で検証する