ユーザーから受け取った値の検証

Excelなどで住所録をつくる際、性別を記載する欄には 「男」もしくは「女」と入力するのが普通ですが、一般的なデータベースでは、性別を 「男性=1/女性=2」と番号と対応させてデータを保存します。
もし誤って、この性別欄に「3」の値が代入されたとします。
性別データが1なら男、2なら女と表示するようにプログラミングした場合、3というデータはあってはなりません。
これを「データの不整合j と呼び、データが壊れた状態になってしまいます。
データの不整合を避けるためには、保存するデータは一定の規則に従って整然としている必要があります。

また、フォームの値は改ざんされる危険性があることも頭に入れておく必要があります。
HTML側でユーザーが間違った値を入力しないように作成すれば、データの不整合は防げると思うかもしれませんが、そうとは限りません。
先ほどの性別を選択するフォ ームを例に説明すると、性別を選択するようなフォームはラジオボタンとなるような場合が多いです。
「男性=1/女性 =2」としてユーザーに入力させる場合、以下のような HTMLソースになります。

<form action=”sendto.php” method-“post” >
■性別
<input type=”radio” name=”sex” value=”1″ /> 男
<input type=”radio” name=”sex” value “2” /> 女
<input type=”submit” name=”button” value=”送信” /></form>

この例ではラジオボタンで性別を選択する場合、1と2しか送信する選択肢がないので、それ以外の値はサーバに送信できないと思われがちですが、悪さを企む攻撃者にとって、1と2以外の値をPOSTさせることなど造作もないことなのです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です