連続アクセス防止

前へ << 排他処理 バッファリング >> 次へ

連続アクセス防止

連続アクセスされて困るのは、例えば掲示板の発言があげられます。 同じ発言を何度も何度も繰り返している人を見たことはあるでしょう。 いわゆる「二度書き」です。 一方、全文検索システムなどは、連続アクセスされても構いません。 ここでは、掲示板の二度書き防止を例に、 連続アクセス防止について説明します。

基本的に、同一人物の連続アクセスかどうかを判別するのは 非常に困難です。なぜなら、web を見るためのプロトコル HTTP は、 情報をやりとりするとすぐにコネクションが切断されるからです (HTTP/1.1 の keep-alive は除く)。

1コネクションごとに1つの CGI プログラムが起動され、 コネクションが切断されると CGI プログラムも終了します

正確に言うと、CGI プログラムが終了するから 標準出力がクローズされ、それに伴い web サーバがソケットをクローズして コネクションが切断されるわけですが。
ですから、前の発言の情報をファイルに保存しておき、 前の発言と重複していないかを調べる必要があります。

GET と POST

GET とは、
http://X68000.q-e-d.net/~68user/web-cgi/get-post.cgi?DATA1=VALUE1&DATA2=VALUE2
のように URL の後ろに CGI に渡すための情報を与えるものです。 一方、POST は
<FORM ACTION="get-post.cgi" METHOD=POST>
<INPUT TYPE=TEXT NAME="DATA1" VALUE="VALUE1">
<INPUT TYPE=HIDDEN NAME="DATA2" VALUE="VALUE2">
<INPUT TYPE=SUBMIT VALUE="OK">
</FORM>
となどと書いておくと、ブラウザが
というフォームやボタンを用意してくれます。

大きな違いは、

ということです。全文検索結果の URL は再利用しても構いませんが、 掲示板の発言は再利用させてはいけません。二度書きになるからです。 というわけで、掲示板の二度書き防止の第一歩は「POSTを使うこと」です。

前へ << 排他処理 バッファリング >> 次へ

$Id: dup.html,v 1.5 2004/07/04 16:02:07 68user Exp $