• ベストアンサー

特定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.14

>が、やっぱりサーバーエラーになります。 >友人も同様だそうです。 う~ん…、不思議ですね~。(^_^; 動いているものをコピーしただけなんですが…。(勿論相手のURL等書き換えた箇所はありますが) とりあえずご友人のところで「perl -wc ○○○.cgi」を実行してもらって頂けませんか? 簡単にエラー箇所が判りますので。 メッセージの意味が不明なら、そのまま記載して頂ければ解読してみます。 よろしくお願いします。 >A__さん 了解です。(^_^) また何かお気づきになりましたらご指摘お願いします。 直に見ることが出来ないので、何故動作しないのか正直想像が付かないのです。(こちらで動いているものをそのままコピーしただけに、尚…)

hotahota2
質問者

お礼

ありがとうございます! 動作しました! 原因ですが、おばかな話、私は改行をMacに、友人はDos形式にしたままUPしてました。Unixにしたらあっさり動作。 ………馬鹿な間違いしててすみませんでした。 これで一部はなんとか排除できそうです。 もっとも直接飛び込んでくる分はどうしようもありませんが。 本当に御丁寧に皆さんありがとうございました。 深く感謝致します。

  • A__
  • ベストアンサー率47% (22/46)
回答No.13

naturalさん、お返事ありがとうございます。 print<<"EOF" という書式は最後に改行が必要だということから 実験もせずに書き込みしました。 正常に動いていたんですね。 お騒がせしました。

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

>A__さん >↑の MESSAGE の次に空白行が必要だと思いました。 とりあえずそのままで動作していますが…。(^_^; 私が参照している書籍には記載がなかったのですが、環境によってはNGだとか言うと仕事上致命的なので、それに関する注意が書かれているサイトや書籍等がありましたら教えて頂ければ幸いです。 よろしくお願いします。

  • A__
  • ベストアンサー率47% (22/46)
回答No.11

あんまり自身がない発言だけど、 No5 の naturalさんのサンプルソースの 終わりの方に空白行が抜けているような気がしました。 ~ <H1>現在メンテナンス中です</H1> </BODY> </HTML> MESSAGE } ↑の MESSAGE の次に空白行が必要だと思いました。

hotahota2
質問者

補足

ありがとうございます。 一応、こちらは空白行を入れてました。 が、やっぱりサーバーエラーになります。 友人も同様だそうです。

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

>普通.cgiは「読む」と「検索実行」を全て、「書き込み」をオーナーのみをチェックだと思ったのですが。 度々言葉足らずですみません。(^_^; 既存のパーミッション状態に「検索/実行」権を追加してくださいと言う意味だったのです。(恐らく初期状態で644になっていると思ったもので…) つまり755の状態であればOKです。 もう一度御確認の上、実行してみて下さい。 また不明点があれば補足して下さい。

hotahota2
質問者

補足

>既存のパーミッション状態に「検索/実行」権を追加してくださいと言う意味だったのです。(恐らく初期状態で644になっていると思ったもので…) 了解しました。 とりあえず、友人にチャレンジするように言ってあります。 また助力をあおぐかもしれませんがよろしくお願いします。

回答No.9

再度投稿します。 下で紹介したリンクブロッカーの43行目くらいに # 特定のページ以外からのリンクアクセスは拒否したいが、URL直接入力やブックマー # ク等のダイレクトアクセスは許可したい場合は、次の行の頭にあるシャープ"#"を外し # て下さい。 との記述があります。これを使ってうまく設定できないものでしょうか?ふと思ったのですが、悪意をもった閲覧者がURL直接入力した場合は、いずれにせよ制限できないと思うのですが、どうなのでしょう?特定URLにチャットの入り口がリンクされてしまっているということですよね??その他勘違いしていましたら、読み流してください。

hotahota2
質問者

補足

すみません。見落としておりました。 <# 特定のページ以外からのリンクアクセスは拒否したいが、URL直接入力やブックマーク等のダイレクトアクセスは許可したい場合は、次の行の頭にあるシャープを外して下さい。 ちなみに設置してみましたが、度重なる嫌がらせの関係で友人は該当URLをあっちこっち移動させているみたいです。 で、ブックマークの人とウェブリングから回ってくる人に分かれているようです。 つまり『特定URL』”のみ”弾きたい部分でこなせないと言っておりました。

回答No.8

割り込み失礼します。 フリーのCGIで下記のようなものをみつけたので、参考にしてください。使ったことはないので、どこまで防げるかは不明です。 TOPページ>その他の中のアクセス制限>リンクブロッカー http://www-power.net/

hotahota2
質問者

補足

ありがとうございます。 初めて配付でリンクブロッカーを見ました。 ですが、常連さんのほとんどが問題ページにブックマーク(直リンク)をしているらしいのです。 今、ダウンロードしてみましたところ、直リンクはすべて弾かれるとなっております。(苦笑) となると、このCGIはちょっと今回の件では難があるようです。

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

>ところで、#HTMLを書く所 の部分ですが、#から続けてHTMLを<html>から</html>まで書いていいのですよ すみません、言葉足らずでしたね。 「#」も削ってください。 恐らくサーバーエラーは消えるはずです。 Fetchでのパーミッション設定ですが、まずはサーバー側のファイル一覧が表示された状態で対象のファイルを選択します。 次に、[リモート]メニュー→[Permissionの設定...]を選択します。 設定ダイアログが表示されたら、各ユーザー(オーナー、グループ、全員)の「検索/実行」欄にチェックを入れます。 この状態で再度お試し下さい。

hotahota2
質問者

補足

? 普通.cgiは「読む」と「検索実行」を全て、「書き込み」をオーナーのみをチェックだと思ったのですが。 一応、アドバイス通りの設定をしてみました。(ちなみに今までは上記方法で行っていました) が、やはりエラーになります。 >すみません、言葉足らずでしたね。 >「#」も削ってください。 言葉足らずだなんてとんでもない! お手数かけます。 2つとも#は取って大丈夫ですよね? 本当にお手をわずらわせてしまってすみません。申し訳ないかぎりです。

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

>パーミッションの指定は特殊なものなのでしょうか? いいえ、何ら特殊なものではありません。 ただ、転送しただけでは実行権が付きませんので、転送後telnet等でログインし、 chmod +x ○○○.cgi のような感じで実行権を付加します。 またはチャットのCGIを組み込まれたときにも同様のことをなさっているはずですから、上記の通りでなくてもそのときと同じやり方で構いません。 もし実行権を付加しているのにエラーになると言うことでしたら補足して下さい。 それと、telnetで入れるのならば、スクリプトの置いてあるディレクトリに移動し、コマンドラインから「perl -wc ○○○.cgi」を実行してみて下さい。 スクリプトに記述ミスがあればその行数とエラーが表示されます。 掲載したスクリプトは実行確認済みですが、一応念のためということで…。

hotahota2
質問者

お礼

すみません。補足で実行権を不可と書いておりますが、「付加」しています、の間違いです。 まるきり正反対ですね。まぎらわしくてごめんなさい。

hotahota2
質問者

補足

友人はtelnetで設置しているようですが、私はFTPソフトでパーミッションの設定を行いながら実行権を不可しております。 (私もチャット設置してますが、サーバーがtelnet禁止のところなので、MacのFetchを使っております) 友人と今、連絡が取れないため、友人の方で出るエラーがどんなものか分かりませんが、私の場合は純粋(?)にサーバーエラーです。 どこかの記載が間違ってるかもしれません。 ところで、#HTMLを書く所 の部分ですが、#から続けてHTMLを<html>から</html>まで書いていいのですよね? 一応、改行もしてみたのですが…。 ………サバエラになる原因といえばそれくらいしか見当たらないので………。 私が設置できれば、パーミッションがどうのと言っている友人には伝言はできますので。 本当にお手数ですがよろしくお願い致します。

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

>友人は『チャット入室処理を弾く』のではなく、いわゆる「チャット1、チャット2…」とチャット部屋が並ぶところで特定URLを弾きたいと考えているようです。 ということであれば、そのページ自体をCGI化してしまうのが良いと思います。 既にページがHTMLとして存在するのならそれほど難しくはありませんし。 ちょっと今から職場の方に移動しますので、後程で良ければ具体的に説明いたします。 ご希望ならば補足して下さい。