• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:The RoomさんのランキングCGIについて)

The RoomさんのランキングCGIについて

このQ&Aのポイント
  • The Roomさんのランキング用CGI『Ranking Link』をお借りして、ランキングサイトを運営しています。
  • 最近、アダルトサイトからの登録が増えて困っています。
  • ランキング登録用のHTMLファイル名を変更して対策しましたが、登録は続いています。

質問者が選んだベストアンサー

  • ベストアンサー
  • hok212
  • ベストアンサー率66% (100/150)
回答No.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; } 動作確認はしてませんが、おそらくこれで対処できるはずです。

kana0120
質問者

お礼

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

その他の回答 (1)

  • hok212
  • ベストアンサー率66% (100/150)
回答No.1

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

kana0120
質問者

補足

ご丁寧なアドバイスを有り難うございます。 えっと… 私がお借りしているスクリプトはver,1.86で、それにはmain.htmlは同梱されておらず、 ランキング参加の新規登録はregist.htmlを使用するようになっています。 あと、参考URLの記事を拝見しましたが、CGIのスクリプトについては全くの無知なので、lr_user.cgiのどこに投稿元チェックのスクリプトを入れれば良いのか分かりません…。 お手数ですが詳しく教えて頂ければ幸いです。 宜しくお願い致します。

関連するQ&A