====== 入力処理時のバリデーションを出力処理時のバリデーションとしない ====== 入力処理時のバリデーションは入力のコンテクスト、出力時のバリデーションには出力のコンテクストに合わせてバリデーションする。 ===== 非適合コード例 ===== 0 || $val < 130) { throw Exception('Input validation error')); } return (int)$val; } // 入力バリデーション $age = validate_age($_GET['age']); // 様々な処理。出力時のコードは入力処理コードと同じファイルにあるとは限らない。 // コマンドのパラメーターとして利用。 if (!is_int($age)) { throw Exception('Output validation error')); } exec('mycmd '.$age); ===== 適合コード例 ===== 0 || $val < 130) { throw Exception('Input validation error')); } return (int)$val; } // 入力バリデーション $age = validate_age($_GET['age']); // 様々な処理。出力時のコードは入力処理コードと同じファイルにあるとは限らない。 // コマンドのパラメーターとして利用。 if (!is_int($age)) { throw Exception('Output validation error')); } exec('mycmd '.$age); ===== 例外 ===== 入力、出力で同じバリデーションロジックを共有できる場合もある。 ===== リスク評価 ===== [ルール/推奨事項のリスク評価] [評価例 - 英語表記に統一] ^ Rule ^ Severity ^ Likelihood ^ Remediation Cost ^ Priority ^ Level ^ | IDS05-J | medium | unlikely | medium | P4 | L3 | ===== 関連ガイドライン ===== ===== 参考文献 =====