【ウミガメの供養】消えた個人情報
はじめに
こちらはなんやかんやあって使わなかったウミガメのスープの供養場所です。
出題編投稿後、解答編を公開するまでに期間を設ける場合があります。
解答公開前にコメントにYes/Noで答えられる質問をいただければお返事いたします。
また当店では不採用には至りましたが、レシピを利用される場合は一声おかけいただくと幸いです。自分への戒めとご利用になる参考までに不採用理由も掲載しています。
出題編
彼はあるウェブサイトの入力フォームに必要事項を記入し登録を行った。
しかし登録内容を確認しても、その情報は確認できなかったという。データは確かに存在しているのに…
解答編
ウェブブラウザに搭載されている『開発者ツール』。彼は入力フォーム内の値を書き換えていた。
例えばプルダウンの値を変更したり、チェックボックスの選択肢を増やしてみたり…
さて、このサイト。入力フォームの一部を抜粋するとこんな感じ。
<input type="radio" name="radio" value="1"/>男
<input type="radio" name="radio" value="2"/>女
データベースに登録されるのは『value』の値。つまり1か2だ。
実際の選択肢には『男』とか『女』とか出てくるんだけど、それをそのままデータとして登録するわけじゃない。
彼はこれをこんな風に書き加えた。
<input type="radio" name="radio" value="1"/>男
<input type="radio" name="radio" value="2"/>女
<input type="radio" name="radio" value="3"/>無回答
書き換えられた入力フォームの登録ボタンを押すと、画面には「登録できました」という文字。
そうやって改変した画面からでも、規則に沿っていれば動くしデータベースにも登録されるのだ!
こういった数値で登録するような場合、登録内容を確認するような画面では逆に『数値に紐づいた日本語のラベル』をどこかから持ってくる。
実際には画面に条件分岐で書かれているとか、ラベル用のデータベースから引っ張ってくる…のだが、どちらにせよ改変された数値に紐づく『日本語のラベル』というものは存在しない。そのため、彼が登録内容を確認しても改変された値は空欄となっていた。
彼は開発者に声を荒げる。
だからフロントサイドだけで入力チェックするなって!!
ここは、とある開発会社。彼は新人研修の講師として後輩たちを指導しているのだった。
不採用理由
「プログラマの新人研修のアイスブレイク用」…というテーマで没になった問題。アイスブレイクじゃなくて普通に研修で教えろよっていう話。
入力チェックはJSとサーバサイドでやる…が基本なのだが
・JSでしか入力チェックしない
・JSでやったチェックは内部で再度チェックしない
ということが多々あり、 F12キーを押せば簡単に表示中のデータが書き換えられる今、予期せぬデータを登録したり、エラー吐いたりする。
上の例だとラジオボタンのバリューが数値以外だと登録できずエラー吐いてる。
ある新人研修中の実話なのだが、実話のオチは新人ちゃんが「すみません!配慮して無回答も用意すべきでした!」って反省したというもの。
そうじゃない…そうじゃないんや…
実際のWebサイトとかでこういった書き換えして不正データ登録しようとしたら問題になるのでやらないでください。