-PR-
締切済み

直リンクを回避するには?

  • 困ってます
  • 質問No.10294
  • 閲覧数385
  • ありがとう数9
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 28% (4/14)

自サイト内のデータへの自サイト以外からの直接リンクが有った場合に、それをエラーページなどに飛ばす方法ご存知ありませんか?
そのデータがHTMLファイルなら逃げ道はいくらでもあるんですけど、画像ファイルや動画ファイルなどの場合どうしたら良いのでしょう?
動作条件は
1)プロバイダから借りている領域なのでサーバレベルでの設定は難しい。(多分ムリ)
2).htaccessは使える。
3)データは基本的にバイナリファイル
4)Javaは使用不可
5)CGI(Perl)使用可

.htaccess を色々いじってみたりしてるんですが、自サイトからのアクセスもはじかれてしまうので悩んでます。(Redirect,RedirectMatch等)
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全4件)

  • 回答No.1

私も試したわけではありませんが、sokuさんの質問と同じ方法で実現できると思います。(下の参考URL)

Action の記述は、 .htaccess に行うことができます。それで、CGI(Perl)が使えるとのことなので、自分の領域へのすべてのアクセスを 1 本の CGI で処理するようにして、どこからのリンクかをチェックし制御することは、原理的には可能でしょう。

Action の対象として、 default-handler か、該当ファイルの MIME type を指定すればよいと思います。text/html へのアクセスも CGI 処理するのは、サーバーに余計な負荷をかけるので、 MIME type の指定をお奨めします。

ただし、 .htaccess で制御できる対象は、おおもとの configuration で規制できるので、プロバイダーが Action 制御を禁止している場合には、上のようなことはできません。
補足コメント
shigatsu

お礼率 28% (4/14)

回答ありがとうございます。
>自分の領域へのすべてのアクセスを 1 本の CGI で
ということは、CGIでバイナリファイルを開けて読みこんで送るってことでしょうか?
メガ単位のファイルもそれで実現可能でしょうか?
投稿日時 - 2000-10-08 11:37:13


  • 回答No.2

巨大なファイルなら避けた方がいいでしょうね。
CGIがファイルを入出力している間、サーバーの資源を食っているわけですから、プロバイダーからクレームがつく恐れがあります。CGIを許可しているプロバイダーでも、多くは、「ユーザーが負荷の高すぎるCGIを動かした場合は、予告無しに削除することもある。」という一文を掲げていると思います。

ここは初心にもどり、
☆ なぜ、外からリンクされるのを拒否したいのか?
☆ それは、ホームページに置くのに相応しいデータなのか?
から考え直してはどうでしょう。インターネットという空間にものを置くというのは、基本的に、「公開する」という目的なので、インターネットの仕組みは、「できるだけ透明に公開できる」ように作られています。自分のページから見えるなら、外からリンクしても見れる、というのが、インターネットの透明性ですから。
補足コメント
shigatsu

お礼率 28% (4/14)

もうしわけありませんが、私は透明性云々ではなく、技術的な回答を期待しています。
投稿日時 - 2000-10-08 17:59:14
  • 回答No.3

まだいいでしょうか・・・
次の手段ならば、直リンクを受けてもすべて
TOPページにとばすことができます。
1.TOPページ(index.html)のみをHTMLファイルに
 する。その他はCGIファイル。
2.その他のページは、すべてCGIで出力するように
 変更する。 1つのCGIだけで出力してもいい
 のですが、それをするとパラメータ処理など、
 負荷がかかる可能性が高いので、別CGIにする。
3.それぞれのCGIの中で、HTTP_REFERERをチェック
 して、自分の際都内から参照しているかチェック。
 #これは、パターンマッチ処理でOK。
4.あとは、index.htmlやその他CGIからのリンクを
 変更し直す。

これで直リンクをすべて避けることができ、自分の
サイトからのアクセスはすべて大丈夫になります。
#ただし、それぞれのファイル(JPEGなど)に貼られた
#直リンクは避けられないので、注意してください。

もしかしたら、うまく処理すれば、バイナリファイル
でも出力できるかもしれませんね。
#そこら辺は、自分で調べてください。

ではでは☆
補足コメント
shigatsu

お礼率 28% (4/14)

回答ありがとうございます。
>#ただし、それぞれのファイル(JPEGなど)に貼られた
>#直リンクは避けられないので、注意してください。
実はこれをチェックしたいんです。JPEGじゃないんですけど。

単純にデータ毎のダウンロードカウントを行いたいので、現在はCGIを一つかましてログを取っているんですが、その後に出力される(実際にはLocation出力)URL
を保存すればCGI経由しないでダウンロード可能なんです。
それをなんとか回避できないかなと思っています。
投稿日時 - 2000-10-09 16:48:27
  • 回答No.4
レベル12

ベストアンサー率 31% (161/506)

以下の回答に追加する形で回答します。
バイナリファイルのにどうでもいいごみをくっつけ、
単体では役に立たないようにします。
そしてcgiで出力するときにそのごみを取り除くというのではだめでしょうか。
バイナリファイルを暗号化して、cgiで暗号化を解いてから吐き出すとか、
他にも方法はありますが、そこまでしなくてもいいでしょう。
cgiでバイナリファイルを送出すると、とても重い処理となります。
そこでcgiで解凍した一時ファイルを作り、
その送出はシステムに任せるというのがいいと思います。
アクセスが多いファイルなら一時ファイルを作る処理が重いので、
一時ファイル(解凍済みファイル)をチェックして、
そのファイルがすでに存在したら、
それをそのまま送出すると処理も軽くなるでしょう。
質問では何をしたいのか伏せているようなので、
具体的なアドバイスをしにくいのですが...。
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


専門家があなたの悩みに回答!

-PR-

ピックアップ

-PR-
ページ先頭へ