【ばりでーしょん】

バリデーション とは?

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

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

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

参考資料

← 用語集にもどる