入力検証 — ユーザー入力が期待される条件を満たしているかを処理前にチェックすること — は、セキュリティの基礎的な実践です。攻撃はしばしば悪意のある入力を通じて行われるため、入力を検証(およびサニタイズ)することで、多くの脆弱性を防ぐことができます。核となる原則:ユーザー入力を決して信頼してはいけません。
ユーザー入力を決して信頼しない
ALL input from outside (users, APIs, files, requests) is UNTRUSTED — it can be malicious:
→ attackers send crafted input to exploit vulnerabilities (injection, XSS, etc.)
→ "never trust the client" — input can be anything, including attacks
→ Validate and handle ALL external input as potentially hostile.
入力検証が行うこと
VALIDATION → check input meets expected criteria; reject what doesn't:
→ TYPE (is it a number?), FORMAT (valid email?), RANGE (0-120?), LENGTH (max?),
allowed values (whitelist), required fields
→ PREFER ALLOWLISTING (accept known-good) over blocklisting (reject known-bad —
incomplete; attackers find bypasses)
→ reject/handle invalid input safely (don't process it)
