• 締切済み
  • 困ってます

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

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

共感・応援の気持ちを伝えよう!

  • 回答数4
  • 閲覧数527
  • ありがとう数10

みんなの回答

  • 回答No.4
  • KOH_da
  • ベストアンサー率31% (161/506)

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

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • ファイルに埋め込まれた画像を*楽に*読む方法

    C++ WindowsAPI でプログラミングしています。 以下の場合においてビットマップハンドルを構成し、BitBltなどで貼り付ける楽な方法が知りたいです。 ファイル内にビットマップ形式の画像ファイルのバイナリデータが丸ごと埋め込まれている、 ファイル画像ファイルデータの前後に何らかのデータが置かれる、かつ、画像ファイルバイナリの 開始位置と終了位置を知ることができる。 自分が調べた限りでは、バイナリを読んでビットマップファイルの各構造体に書き込んで、 CreateDIBitmap を使うのがもっともよさそうなのですが、もっと楽な方法がないものでしょうか?

  • htaccessを使ってredirectさせたいのですが・・・

    今組んでいるプログラムで、「あるディレクトリにアクセスした時に別のCGIファイルへ自動的に転送させる」というような仕組みを使用したいと思っています。 使っているサーバはhtaccessが使えるので、htaccess内にRedirect関数を記述して転送させようとしているのですが、何度やっても自動転送がうまくできません。 具体的に言うと「index.html」にアクセスした時に「cgi-bin/index.cgi」というファイルに自動転送させたいのですが、index.htmlがそのまま表示されてしまうのです。 それで、index.htmlを削除してみると、今度は「403 Forbidden」エラーが起こってしまっています。 ちなみに、使っているサーバはWEBARENAです。 もうどうしたら解決するのか全然わからず困りはてています。 皆さまの知恵をお貸しください。よろしくお願い致します。

  • 別サーバーのcgiへバイナリデータを送る方法

    サーバーAに、バイナリデータがあります。 これをサーバーBのcgiへデータを渡したいのですが、方法を教えてください。 HTMLで書くと、以下のようにc:\data.binを<form>でcgiに送信するようなイメージです。しかし、<input file>タグではセキュリティーのためvalueでファイルを指定することができません。 ここのc:\data.binは、ファイル名が変動するため、人間に手で選択させることはさせたくないです。 <form action="http://www.サーバーB.jp/Server_B.cgi" enctype="multipart/form-data" method="post"> <input type="file" value="c:\data.bin"> <input type="submit" value="サーバーAに送信"> </form> これを、cgi(Perl)を使用して、同じようなものを書くことはできますでしょうか? httpヘッダを書いて、その後ろにデータを送信して、、といった感じでできるような気がするのですが、 httpヘッダの書き方が分かりません。 受け側のサーバーBのcgiでは、CGI_Lite.pmを使用してバイナリデータを受信します。 通常、バイナリのデータ送信はftpを使用するのだと思いますが、相手側がftpに対応していません。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • 回答No.3
noname#9414
noname#9414

まだいいでしょうか・・・ 次の手段ならば、直リンクを受けてもすべて TOPページにとばすことができます。 1.TOPページ(index.html)のみをHTMLファイルに  する。その他はCGIファイル。 2.その他のページは、すべてCGIで出力するように  変更する。 1つのCGIだけで出力してもいい  のですが、それをするとパラメータ処理など、  負荷がかかる可能性が高いので、別CGIにする。 3.それぞれのCGIの中で、HTTP_REFERERをチェック  して、自分の際都内から参照しているかチェック。  #これは、パターンマッチ処理でOK。 4.あとは、index.htmlやその他CGIからのリンクを  変更し直す。 これで直リンクをすべて避けることができ、自分の サイトからのアクセスはすべて大丈夫になります。 #ただし、それぞれのファイル(JPEGなど)に貼られた #直リンクは避けられないので、注意してください。 もしかしたら、うまく処理すれば、バイナリファイル でも出力できるかもしれませんね。 #そこら辺は、自分で調べてください。 ではでは☆

共感・感謝の気持ちを伝えよう!

質問者からの補足

回答ありがとうございます。 >#ただし、それぞれのファイル(JPEGなど)に貼られた >#直リンクは避けられないので、注意してください。 実はこれをチェックしたいんです。JPEGじゃないんですけど。 単純にデータ毎のダウンロードカウントを行いたいので、現在はCGIを一つかましてログを取っているんですが、その後に出力される(実際にはLocation出力)URL を保存すればCGI経由しないでダウンロード可能なんです。 それをなんとか回避できないかなと思っています。

  • 回答No.2
noname#134955
noname#134955

巨大なファイルなら避けた方がいいでしょうね。 CGIがファイルを入出力している間、サーバーの資源を食っているわけですから、プロバイダーからクレームがつく恐れがあります。CGIを許可しているプロバイダーでも、多くは、「ユーザーが負荷の高すぎるCGIを動かした場合は、予告無しに削除することもある。」という一文を掲げていると思います。 ここは初心にもどり、 ☆ なぜ、外からリンクされるのを拒否したいのか? ☆ それは、ホームページに置くのに相応しいデータなのか? から考え直してはどうでしょう。インターネットという空間にものを置くというのは、基本的に、「公開する」という目的なので、インターネットの仕組みは、「できるだけ透明に公開できる」ように作られています。自分のページから見えるなら、外からリンクしても見れる、というのが、インターネットの透明性ですから。

共感・感謝の気持ちを伝えよう!

質問者からの補足

もうしわけありませんが、私は透明性云々ではなく、技術的な回答を期待しています。

  • 回答No.1
noname#134955
noname#134955

私も試したわけではありませんが、sokuさんの質問と同じ方法で実現できると思います。(下の参考URL) Action の記述は、 .htaccess に行うことができます。それで、CGI(Perl)が使えるとのことなので、自分の領域へのすべてのアクセスを 1 本の CGI で処理するようにして、どこからのリンクかをチェックし制御することは、原理的には可能でしょう。 Action の対象として、 default-handler か、該当ファイルの MIME type を指定すればよいと思います。text/html へのアクセスも CGI 処理するのは、サーバーに余計な負荷をかけるので、 MIME type の指定をお奨めします。 ただし、 .htaccess で制御できる対象は、おおもとの configuration で規制できるので、プロバイダーが Action 制御を禁止している場合には、上のようなことはできません。

参考URL:
http://www.okweb.ne.jp/kotaeru.php3?q=10219

共感・感謝の気持ちを伝えよう!

質問者からの補足

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

関連するQ&A

  • ホームページのトップページを同じURLで携帯とPCにアクセス別に振り分

    ホームページのトップページを同じURLで携帯とPCにアクセス別に振り分けたいのですが、 CGIを使わずにjavaかhtaccessファイルで出来ますか。 どなたか詳しい方、記述を教えていただけないでしょうか。 よろしくお願いします。

  • バイナリファイルをバイト単位でアクセスするには?

     大サイズのバイナリファイルに対して、perlでチェックサムを調べたりCRCチェックをかけるプログラムを作成したいと考えています。従って、そのバイナリファイルからバイト単位でデータを取り出して、計算するということをしなければならないのですが、いちばん基本的なところの、『バイナリファイルからバイト単位で順番にデータを取り出す方法』がわかりません。  よろしくお願いします。

    • ベストアンサー
    • Perl
  • 初めて質問させていただきます。

    初めて質問させていただきます。 javaでバイナリデータをファイルに保存したいのですが、どのようにファイルに書き出すべきなのかわかりません。 ここでいうバイナリデータなのですが、適切かわかりませんがCOBOLへ渡すデータとなります。 説明不足ならば申し訳ありませんが、お助けください。 よろしくお願いいたします。

    • ベストアンサー
    • Java
  • DXFファイル内OLEフレームのバイナリデータに…

    DXFファイル内OLEフレームのバイナリデータについて こちらに質問させていただいていいのか良くわかりませんが、質問させていただきます。 失礼にあたりましたらお許しください。 DXFファイルを解析して画像ファイルに落す処理を作成しています。 OLEオブジェクトとして挿入されているオブジェクトを解析しようとしているのですが、バイナリデータが入っています。 これは何のバイナリデータなのでしょうか? お分かりになる方がいらっしゃいましたら教えてください。

  • リダイレクトの方法

    たとえば、 http://www.XXX.ne.jp/というサイトがあった場合、 http://www.XXX.ne.jp/abcde.html というようなページがないサイトにアクセスした場合、そのサイトのある特定のページにリダイレクトしたいのですが、いい方法はないでしょうか? できれば、htaccess ファイルを使ったものがいいのですが、 http://www.shtml.jp/htaccess/redirect.html の方法でやってみると、実際にある index.html にアクセスしてもリダイレクトしてしまいます。 なにかいい方法はないでしょうか?

  • 画像ファイルをドラッグ&ドロップで登録

    画像ファイルをCGI等でアップロードする時、通常フォームの「参照」をクリックしてファイルのアドレスを決定しますが、画像ファイルをドラッグ&ドロップしてアドレス決定は出来ないでしょうか? html単体では無理だと思うのですが、javaとかを使えば実現できそうな気がして… 無理だったら「無理」の回答でもOKです。 何か方法があるようでしたら参考となるサイト等教えてください。

    • 締切済み
    • CSS
  • スレッド式のアップローダを探しています。

    クラスメイトと、教科ごとの宿題や課題の共有できるページを作ろうと考えています。 そこで、スレッド式で画像ファイルzipファイルなどに対応したフリーのcgiスクリプトを探しています。 cgiサーバは、FTP、CGI/Perl、CGI/Python、SSI、PHP、sendmail、FollowSymLinks、.htaccessに対応しています。 良さそうなcgiスクリプトを配布されているサイトがありましたら、どうぞ教えてください。

    • ベストアンサー
    • CGI
  • phpでCGIをインクルード

    コンテンツをPHPで作成していますが、掲示版はCGI(PERL)で自サイト内においています。 例えば、index.php内に掲示板のトップであるbbs.cgiをインクルードささせる方法はないものでしょうか? index.phpとBBS.CGIは同階層に設置してます。 ちなみに、PHPで掲示板という手もありますが、今まで運営しているCGI掲示板にこだわります。 SSIは使わないでインクルードさせる方法があれば、教えて下さい。 (サイト検索しましたが、ヒットしませんでした。)

    • 締切済み
    • PHP
  • VB .NETでのSocket間通信について

    すいません。Socket間通信のプログラムについて教えてもらえませんか。 System.Net.Socketsを使用してプログラムを作成するのだと思うのですが、 未熟なため困っております。 内容は以下の通りです。 ある機器がネットワークにぶら下がっております(IP Address : 192.168.1.99) その機器に対してネットワーク上のPCから次のようなコマンドを打ちます。 RQ A0,1,0 ---- 単なるパラメータなのでそのままテキストで送信 するとその機器は OK [バイナリデータ] として、バイナリデータは画像ファイルを送信してきます。 で、私がやろうとしていることはそのバイナリデータの画像ファイルをコマンド を投げたPCにファイルとして取得したい(例えば001.bmpなど)のです。 テキストとバイナリがごっちゃになっていて更にデータをダウンロードすると いうので実はパニッくっています。 少しのヒントでよいので、突破口になりそうなヒントや参考にしたらいいHPを教え てもらえると助かります。 ・・・MSDNは見ているのですが。。。理解力が乏しいので少しでもう少しわかりやすい HP等があればと思い投稿させていただきます。

  • BASIC認証でユーザー名取得

    こんにちは。 現在、BASIC認証を使用した簡易会員サイトを作っています。 誰がいつログイン?したか履歴を取りたくて、会員サイト内のhtmlファイルがアクセスされた際に、cgiファイルを起動し、履歴取得をする方法で考えていましたが、ユーザー名が空欄になってしまい、どうにもうまくいきません? 現在、会員サイト内の公表ファイルは、[home]以下に入っており、そこにhtaccessも配置しています。 cgiファイルは、[cgi-bin]以下でしか動作しないので、この中に配置しています。 何か良い方法があればご教授願います。 宜しくお願いします。

専門家に質問してみよう