セキュリティーホール対策

なぜPHPアプリにセキュリティホールが多いのか?:第12回 フェイルセーフ ── 万が一に備える|gihyo.jp … 技術評論社
にて対策一覧があったので記録しておく。

スクリプトインジェクション/セッションハイジャックに備える対策

  • セッションクッキーを利用する
  • セッションIDを頻繁に変更する
  • セッション名にランダム文字列を使用する
  • セッションIDが利用できる範囲を制限する
  • 不正なセッションIDの利用がないか記録できるようにする
  • 文字エンコーディングは必ずHTTPヘッダで指定する
  • 入力文字列の文字エンコーディングを検証する
  • エラーが発生した場合,サニタイズせずプログラムの実行を停止する
  • 自動ログインを実装しない。実装する場合は正しく実装する
  • 安易にウィジットを利用しない
  • すべての入力値を可能な限り厳しい条件で検証する
  • エスケープしてはならないデータ以外はすべてエスケープする
  • データベースなど,内部データを信用しない
  • データベースサーバなどが不正な文字データを保存できないようにする
  • HTML,CSSJavaScriptの生成はホワイトリスト方式を利用する
  • JavaScriptが無効なクライアントでも利用可能なサイトにする
  • 関連するサイトが利用するドメイン名の一覧を提供する
  • パスワードを正しく管理する
  • ログイン処理を正しく実装する
  • ユーザを教育する