アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんばんわ☆
The Roomさん(http://dream.lib.net/room/index.shtml)の
ランキング用CGI『Ranking Link』をお借りして、ランキングサイトを運営しています。

運営を始めて数ヶ月が経ちましたが、最近やたらとアダルトサイトからの登録が多くなって困っています。
スクリプトの設置方法は、ディレクトリを別にして、複数設置しており、カテゴリを15個ほど作っているのですが、同じ日の同じ時間に全てのカテゴリに対しての登録もあります。
(何かプログラムを使ってやっているのかなぁ…?)

で、その対策のために先日、ランキング登録用のHTMLファイル名を変更して、HP上では新規登録をできない状態にしました。
(ファイル名は変更しましたが、サーバーには存在しています。)

しかし、相変わらずアダルトサイトからの登録は続いております。
CGIに詳しい方で、何か別の対策方法をご存知の方がおられましたら、どんな事でも良いのでアドバイス頂ければ幸いです。

スクリプトの配布元であるThe Roomさんに問い合わせをしましたが、返答がもらえなかったので、こちらへ投稿させて頂きました。

どうぞ宜しくお願い致します!!

A 回答 (2件)

#1 です。



昨日の回答では、Ranking Link をダウンロードしてソースを見てたつもりだったのですが、よくよく見るとLink Ring というCGIでした。
大変失礼しました。

> あと、参考URLの記事を拝見しましたが、CGIのスクリプトについては全くの無知なので、
> lr_user.cgiのどこに投稿元チェックのスクリプトを入れれば良いのか分かりません…。

先の回答で「参照してください」といったスクリプトは、そのままでは Ranking Link では使うことが出来ないため、ちょっとだけ手を加えたスクリプトを載せておきます。

# 次の3行をrl_use.cgiの155行目(sub regist)と156行目(&datacheck)の間に入れます。
$myscript = 'http://hogehoge.xyz/hogehoge/html/'; # regist.htmlを設置したURL(ディレクトリまで)
$ref_flag = &refCheck;
if ($ref_flag == 0) { &err_msg('不正なアクセスです'); }

# 次の6行(&refCheck)をrl_use.cgiの最後の行に入れます。
sub refCheck {
$ref = $ENV{'HTTP_REFERER'};
$ref =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("H2", $1)/eg;
if ($ref =~ /$myscript/i) { return 1; }
else { return 0; }
}

# 次の5行(&err_msg)を、上記&refCheckの更に下に入れます。
sub err_msg {
print "content-type:text/html\n\n";
print "<html><head></head><body>$_[0]</body></html>\n";
exit;
}

動作確認はしてませんが、おそらくこれで対処できるはずです。
    • good
    • 0
この回答へのお礼

hok212さん、引き続きご丁寧な回答をありがとうございます!!
これから教えて頂いたスクリプトを追加するのですが、もしダメだったらこのCGIは諦めて、もっとセキュリティの高いものを使用してみようと思います。
初心者の私でも対処できそうな詳しいアドバイスを本当に有り難うございました!!

お礼日時:2005/10/07 18:25

The Room さんで配布されている Ranking Link というCGIのソースをざっと見ましたが、このCGIは外部からの登録が出来ちゃうタイプです。


# このCGIの性格として「誰でも登録していいよ」という感じのものですから、作者としてはこれでいいと思ったのでしょう。

それで、新規登録における処理の流れは次のようになります。

1. mail.htmlの参加のリンクをクリックするとlr_user.cgiにkey値:act/value値:reg1という組み合わせが渡される。
2. lr_user.cgiの&reg1(登録フォーム)が表示される。
3. 上記フォームの「登録」ボタンを押すことで、処理が &reg2 に渡り登録が完了する。

kana0120さんはmain.htmlを削除(リネーム)されたようですが、実際の登録処理はlr_user.cgiで行われてますし、先にも書きましたようにこのCGIは外部からの投稿が可能になっております。
そのためmain.htmlを削除してもほとんど意味はありません。

さて、対策方法ですが、lr_user.cgiの&reg2に入った直後に外部からの投稿チェックをするといいです。

投稿元チェックのサンプルスクリプトは、以前に次のURLに書きましたので参考にしてください。

http://security.okweb.jp/kotaeru.php3?q=1679148

この回答への補足

ご丁寧なアドバイスを有り難うございます。
えっと…
私がお借りしているスクリプトはver,1.86で、それにはmain.htmlは同梱されておらず、
ランキング参加の新規登録はregist.htmlを使用するようになっています。

あと、参考URLの記事を拝見しましたが、CGIのスクリプトについては全くの無知なので、lr_user.cgiのどこに投稿元チェックのスクリプトを入れれば良いのか分かりません…。
お手数ですが詳しく教えて頂ければ幸いです。
宜しくお願い致します。

補足日時:2005/10/05 17:45
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!