【ばりでーしょん】

バリデーション とは?

最終更新:
💡 入力データが、決めた形式やルールに合うかを確認する

入力データが、決めた形式・範囲・業務ルールに合うかを確認する処理。ここではプログラムの入力検証を指す。入力を受け付けられても、その内容が事実であることや、利用者の権限、安全な利用まで保証するものではない。

📌 このページのポイント
入力を受け取る側でも、ルールを確認フォーム数量の入力早めに案内サーバー型・範囲ルール検証次の処理へ権限確認など受け付けないエラーを返す独自の例:注文数量は整数の1〜20
入力側の案内だけに頼らず、サーバー側でも検証する例です。矢印は入力と判定後の流れ。通過しても本人確認や利用権限、SQLのパラメーター化、出力時の対策は別に必要です。
ひよこ ひよこ
バリデーションは何を確認するの?
ペンギン先生 ペンギン先生
入力が決めたルールに合うかを確認するよ。数値の範囲、文字列の長さ、必須項目、日付の形式などに加え、終了日が開始日より後かといった項目同士の関係も見る。単に数字として読めることと、その数量を受け付けてよいことは別なんだ
ひよこ ひよこ
入力中にエラーが出るのも、その一つ?
ペンギン先生 ペンギン先生
そうだよ。ブラウザ側で早く知らせると、利用者が修正しやすくなる。ただし、ブラウザのチェックは無効にしたり、ブラウザを使わずにリクエストを送ったりできる。実際に入力を使うサーバー側でも検証しよう
ひよこ ひよこ
メールの形式が合えば、本物と分かる?
ペンギン先生 ペンギン先生
形式だけでは、そのメールボックスを本人が使えるかまでは分からないよ。必要なら確認メールなどで利用できることを確かめる。また、正しい形式のアカウントIDでも、その利用者がアクセスしてよいかは別に確認するんだ
ひよこ ひよこ
入力を検証すれば、SQL攻撃も防げる?
ペンギン先生 ペンギン先生
入力検証だけに頼ってはいけないよ。SQLには値を安全に渡すパラメーター化されたクエリを使い、画面に出すときは文脈に合う出力エンコードを行う。検証に通った文字列でも、SQLやHTMLの一部としてそのままつなぐと問題になることがあるんだ
ひよこ ひよこ
サニタイズとは何が違うの?
ペンギン先生 ペンギン先生
入力検証は受け付ける条件に合うかを判断し、サニタイズは内容を変える処理だよ。例えばHTMLを受け付ける場合は、適切なライブラリで危険な要素を除く。怪しそうな文字を全部削れば安全、という方法では、正当な名前や文章を壊すこともあるんだ
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「バリデーション」って出てきたら「入力データが、決めた形式やルールに合うかを確かめる処理」と思えばだいたいOK!
📖 おまけ:英語の意味
「Validation」 = 妥当性の確認
💬 このページでは入力データの検証を説明しているよ。形式だけでなく、開始日より終了日が後かといった、操作に合う値かどうかの確認も含むんだ

参考資料

← 用語集にもどる