超初級CGIクラックガイド(6)
超初級CGIクラックガイド(3)と超初級CGIクラックガイド(4)でform=getの場合、超初級CGIクラックガイド(5)でform=postの場合に関して説明してきました。そのどちらの場合にも、formからCGIに伝わるデータは「name=閲覧者に指定された値&name=閲覧者に指定された値&・・・」という形式です。「このデータはtext入力欄から送信されたのか選択欄から送信されたのか・・・」という識別はありません。
某コミニケーションサイトには「プロフィールカード」ってモノがありました。メンバー一人一人がプロフィールを書き込む訳です。設定画面がこんな感じ。
そこで僕はこんなウェブページを作りました。
そしてこの方法が他メンバーにも普及ししばらくしたらこの穴は塞がれました。プロフィール変更CGI(上の「***.cgi」)で「address=*****の*****が不正ならば弾く」という処理を行うようになった(多分)からです。
次回でもうちょっと話を進めます。
今回の話はmethodがgetであれpostであれ同じです(「query_stringとして伝わるか標準入力として伝わるか」という差はありますが)。
これを使ったイタズラを考えてみましょうか。某コミニケーションサイトには「プロフィールカード」ってモノがありました。メンバー一人一人がプロフィールを書き込む訳です。設定画面がこんな感じ。
<form action="***.cgi" method="post"> ←別にgetメソッドでも話は同じですよ
<input type="text" name="myname">
<select name="address">
<option value="北海道">北海道
<option value="青森">青森
…
</select>
<input type="submit">
</form>
「住所」は選択式ですね。これじゃつまらない。住所くらい好きに設定したいじゃないですか。<input type="text" name="myname">
<select name="address">
<option value="北海道">北海道
<option value="青森">青森
…
</select>
<input type="submit">
</form>
そこで僕はこんなウェブページを作りました。
<form action="http://www.****.com/***.cgi" method="post">
<input type="text" name="myname">
<input type="text" name="address">
<input type="submit">
</form>
「上手くいくかなぁ」とドキドキしながら試してみたら上手くいきました。これで、「北海道」とか「青森」とかしか選べなかった「住所」を自分で自由に設定することが可能になったんです。<input type="text" name="myname">
<input type="text" name="address">
<input type="submit">
</form>
そしてこの方法が他メンバーにも普及ししばらくしたらこの穴は塞がれました。プロフィール変更CGI(上の「***.cgi」)で「address=*****の*****が不正ならば弾く」という処理を行うようになった(多分)からです。
次回でもうちょっと話を進めます。

TrackBack
この記事へのトラックバック