セキュリティーホール対策
なぜPHPアプリにセキュリティホールが多いのか?:第12回 フェイルセーフ ── 万が一に備える|gihyo.jp … 技術評論社
にて対策一覧があったので記録しておく。
スクリプトインジェクション/セッションハイジャックに備える対策
- セッションクッキーを利用する
- セッションIDを頻繁に変更する
- セッション名にランダム文字列を使用する
- セッションIDが利用できる範囲を制限する
- 不正なセッションIDの利用がないか記録できるようにする
- 文字エンコーディングは必ずHTTPヘッダで指定する
- 入力文字列の文字エンコーディングを検証する
- エラーが発生した場合,サニタイズせずプログラムの実行を停止する
- 自動ログインを実装しない。実装する場合は正しく実装する
- 安易にウィジットを利用しない
- すべての入力値を可能な限り厳しい条件で検証する
- エスケープしてはならないデータ以外はすべてエスケープする
- データベースなど,内部データを信用しない
- データベースサーバなどが不正な文字データを保存できないようにする
- HTML,CSS,JavaScriptの生成はホワイトリスト方式を利用する
- JavaScriptが無効なクライアントでも利用可能なサイトにする
- 関連するサイトが利用するドメイン名の一覧を提供する
- パスワードを正しく管理する
- ログイン処理を正しく実装する
- ユーザを教育する