• ベストアンサー

特定URLから

友人の運営するサイトが特定URLからの閲覧者から嫌がらせを受けています。 その特定URLの管理者に言っても聞き入れてもらえないのは分かっていますので、アクセス制限をかけたいと考えているようです。 しかし私も友人もホストによるアクセス制限のかけかたは知っていても特定URLからのアクセス制限は分かりません。 実際、あるのかどうかも分かりませんが、あったら非常にありがたいと思っています。 もしも特定URLからの閲覧者を弾く、アクセス制限の方法およびプログラム記載がありましたら、御教授願います。

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

  • ベストアンサー
  • natural
  • ベストアンサー率37% (419/1115)
回答No.5

まだ御覧になっていないようですが、一応サンプルを記載しておきます。 #!/usr/local/bin/perl $ENEMY='http://www.○○○.ne.jp/×××.html'; if($ENV{'HTTP_REFERER'} eq $ENEMY){ ErrorFunc(); exit(1); } print << "ENTRY"; Content-type: text/html #この上の行は必ず空行にします。 #この部分に現在のエントリーページのHTMLを全て貼り付けます。 ENTRY exit(0); sub ErrorFunc(){ print<<"MESSAGE"; Content-type: text/html <HTML> <HEAD> <TITLE>エラー</TITLE> </HEAD> <BODY> <H1>現在メンテナンス中です</H1> </BODY> </HTML> MESSAGE } 尚、上記の「#」から始まる行はコメントですので、実際に作成される際は削除してください。 但し先頭行は除きます。 先頭行にはこのCGIを実行する為に必要なperlの在処が示されています。 上記の在処はあくまでサンプルですので、この部分はご使用の環境に合わせて書き換える必要があります。 一番簡単なのはチャットのCGIの先頭行を見てみる手です。 既に動いているプログラムですから間違いないと思います。 また、「$ENEMY」に設定するURLも今は架空のものですので、実際に対象となっているURLを記載して下さい。 ご不明の点があれば補足して下さい。 #尚、これはあくまでも該当URLに貼られたリンクから辿ってきた場合に有効になります。 #また、エラーメッセージはとりあえず当たり障りのないものとしました。

hotahota2
質問者

補足

ありがとうございます。 早速プログラムを実行したところ、パーミッションエラーが起きたそうです。 パーミッションの指定は特殊なものなのでしょうか? ちなみに1行目のperlも合ってますし、jcode.plも入れたそうです。 念のため私も実行しましたところ、サバエラが起きます。 無知なものでもうしわけありません。 パーミッションの件を御教授願います。

すると、全ての回答が全文表示されます。

その他の回答 (13)

  • natural
  • ベストアンサー率37% (419/1115)
回答No.3

そのURLから飛んでくる人だけを排除したいのであれば、No.1のmnabeさんが仰っている様に一つ前のURLを参照して対処すれば良いと思います。 チャット自体がCGIならば、参加時の処理の部分(HN入力等)等、初回のみ通る処理のところに一つ前のURL($ENV{'HTTP_REFERER'}に入っている)をチェックする処理を組み込みます。 そして該当するURLから来ていたらエラーページに飛ばす等の処理を行えば良いのではないでしょうか。 尚、この場合JavaScriptは利用していませんので無効にしても働きます。 ただし、当たり前ですが、ブックマーク等から直接飛んでこられた場合は無効ですが…。

hotahota2
質問者

補足

>参加時の処理の部分(HN入力等)等、 >初回のみ通る処理のところに一つ前のURL$ENV{'HTTP_REFERER'}に >入っている)をチェックする処理を組み込みます。 チャット自体は確かにCGIですが、いわゆる「覗き」をしてログを 他所の掲示板に張り付ける被害です。 つまり上記「初回のみ通る処理」というのはいわゆる『チャット入室処理を弾く』であるので、解決になりません。 友人は『チャット入室処理を弾く』のではなく、いわゆる「チャット1、チャット2…」とチャット部屋が並ぶところで特定URLを弾きたいと考えているようです。 となると、普通にJavaScriptを綴るしかないのです。 ですが、JavaScriptを無効にされるなどの処置を取られてしまっているので無駄と化してしまっているようです。

すると、全ての回答が全文表示されます。
  • Haizy
  • ベストアンサー率40% (404/988)
回答No.2

hotahota2さん、こんにちは。 >特定URLからの閲覧者を弾く ということから、送信フォームからではない投稿ですね。 単純なスクリプトか何かでしょう。 自作CGIであればメッセージの投稿受付時に「特定のページアドレスからの送信」・・・つまり、自分の投稿フォームからの送信のみを処理をするようにすればよいと思います。さらに、投稿フォームにパスワードなどを施せば、良いのではないでしょうか? 参考になれば。 でわ

hotahota2
質問者

補足

ちなみに嫌がらせは 投稿ではなく、いわゆるチャットの覗きをして、そのチャットの内容をあちこちの掲示板にはりつけるというものです。 チャット自体をすべてROM不可にしてしまえばいいのでしょうが、そうなると純粋な参加者さんたちが「今、入っていいのかどうか……」ということが分からなくなってしまいます。 パスワードも事情あってできない状態です。

すると、全ての回答が全文表示されます。
  • mnabe
  • ベストアンサー率33% (427/1283)
回答No.1

 意味違いがあると嫌ですので、やりたい事を整理します。間違っていたら、訂正して下さい。 ---  特定URLにはってあるURLから来る閲覧者を弾きたい。 ---  サーバを弄れない(CGIが使えない)って前提で書きます。  JavaScriptがONになっている必要性がありますが、飛び先のURL(一個前のURL)が解りますので、それを利用して特定のサイトからの閲覧者を弾く事は出来ます。 JavaScript: document.referrer  を、利用してみて下さい。  しかし、完全では無いので、ちょっとわかる人だと直に、JavaScriptをOFFにしてしまうので、別の手段。  まぁ同様の事を、CGIで行えば良いのですがね(^^;

hotahota2
質問者

補足

>完全では無いので、ちょっとわかる人だと直に、JavaScriptをOFFにしてしまうので、別の手段。まぁ同様の事を、CGIで行えば良いのですがね(^^; JavaScriptでの防衛はしております。 しかし破られております。ちなみにその相手は不特定多数?らしく、しかし、とある場所からリンクして飛んでくるので、URLでのシャットアウトが必要なのです。 やはりCGIだとパスワード制にするしかないでしょうか?

すると、全ての回答が全文表示されます。

関連するQ&A