入力バリデーション

ユーザー入力を検証し、不正なデータがシステムに入り込むのを防ぐセキュリティの基本

セキュリティ設計

入力バリデーションとは

入力バリデーションは、ユーザー入力を検証し、不正なデータがシステムに入り込むのを防ぐセキュリティの基本である。SQL インジェクションXSS、バッファオーバーフローの多くは、入力バリデーションの欠如が原因。

バリデーションの原則

許可する値を定義する許可リスト (ホワイトリスト) 方式が推奨で、禁止する値を定義する拒否リスト (ブラックリスト) 方式は不十分だ。クライアントの検証は回避可能なため、必ずサーバーサイドで検証する。不正な入力は即座に拒否し、早期に失敗させる。

バリデーションの層

バリデーションの層を図で示す。

クライアント (UX 向上)
  ↓ フォームバリデーション (即座にフィードバック)
API Gateway (スキーマ検証)
  ↓ リクエストバリデーター
Lambda (ビジネスルール)
  ↓ Zod, Joi 等でバリデーション
DynamoDB (制約)
  ↓ 条件付き書き込み

よくあるバリデーション

よくあるバリデーションを以下にまとめる。

フィールド バリデーション
メールアドレス 形式チェック、長さ制限
パスワード 最小長、複雑さ
数値 範囲チェック、整数チェック
文字列 長さ制限、許可文字
URL 形式チェック、プロトコル制限
ファイル サイズ、MIME タイプ

バリデーションのアンチパターン

バリデーションのアンチパターンを以下にまとめる。

アンチパターン 問題
クライアントのみで検証 サーバーに直接リクエスト可能
拒否リストのみ 新しい攻撃パターンを見逃す
エラーメッセージに詳細を含む 攻撃者に情報を与える
バリデーションの重複 共通ライブラリで一元化する

入力バリデーションの背景や設計思想は関連書籍に詳しい。

この記事は役に立ちましたか?

関連用語

関連する記事