- ベストアンサー
直リンクの防止
毎日更新している自分の画像を、掲示板サイトや直リンクサイトで「画像url」で書かれてしまった場合に対する対処策で悩んでます。 -------------------------------------------- 例 http://www.○○○.com/koshin/mainiti6-26.jpg -------------------------------------------- 画像リンクのクリックを、トップページに転送することはできないのでしょうか。 防止策のあるcgiとかがあれば紹介してほしいです><
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
#1ですが 具体的に書きます http://www.○○○.com/ がtoppageで http://www.○○○.com/koshin/ に.htaccess をおく場合 ###この↓から .htaccessの内容 RewriteEngine on RewriteCond %{HTTP_REFERER} !^http://www.○○○.com #RewriteCond %{HTTP_REFERER} .+ RewriteRule ^.*$ http://www.○○○.com/ [R=301,L] ## この↑まで .htaccess これで 通常のブラウザではRefererに http://www.○○○.com が入っていないとアクセス出来ません ただしアクセスした人がセキュリティSOFTを使っている場合REFERERをはかない場合が有ります そうすると、ちゃんとあなたのページのリンクを辿っても制限に引っかかります それを解除するには 3行目の 行頭の# を消してください ただ、その場合でも直リンクは防げますが URL欄に直接画像のURLを入れられると防げません それから .htaccessを toppageに置くのなら 4行目を RewriteRule ^koshin http://www.○○○.com/ [R=301,L] に変えます ##### rewriteの説明は以上 CGIでやる方法も有るには有りますが URLを変えないでとなるとかなり面倒です 一応手順を 方法1 拡張子 .jpg をCGIとして設定 手順1.#2さんの書かれたような内容のcgiを書き file名をmainiti6-26.jpg などとします 手順2. koshin/.htaccess に AddHandler cgi-script .cgi .jpg などと書けば 拡張子 .jpgもCGIとして動きます 方法2. CGI+rewrite 手順1. koshin/に 適当なcgiをおきます(仮に test.cgi とします) test.cgi の内容も #2さんの書かれたような内容ですが Refererが正しければ=>$ENV{'QUERY_STRING'} を読み込んで それに対応した画像を表示する (画像自体は 直接アクセスできない場所においておき CGIから読み込むことだけ出来る) 正しくなければ Toppageへ飛ばす 手順2. .htaccessに RewriteEngine on RewriteCond %{REQUEST_URI} !test.cgi RewriteRule ^(.*)$ /koshin/test.cgi?$1 [L] と書きます。 これで http://www.○○○.com/koshin/mainiti6-26.jpg というURLにアクセスして URL欄はそのまま変わりませんが 実は↓ http://www.○○○.com/koshin/test.cgi?mainiti6-26.jpg へのアクセスにすり替わって test.cgi にクエリーを渡せる仕組みになっています ### しかし rewrite 一つで簡単に出来るものを わざわざ CGIまで使うのが賢明とは思えません また方法1 だと画像fileのfile名が変わるたびに別のcgiを用意しなくてはいけませんし なので .htaccess が許可されていない状況のときだけ CGIを使って URLは変わってしまいますが http://www.○○○.com/koshin/test.cgi?mainiti6-26.jpg <=QUERY_STRINGで引数渡し または http://www.○○○.com/koshin/test.cgi/mainiti6-26.jpg <=$ENV{'PATH_INFO'}で引数渡し などの方法を検討するべきかと思います。
その他の回答 (6)
- umasikajiro
- ベストアンサー率67% (545/803)
この質問の場合は ”画像リンクのクリック” と有りますので よそのページから <A HREF="http://self.example.com/image.jpg" > hoge画像</A> と言う状況を想定してとなるでしょうね <IMG SRC で呼ばれた場合は おそらく#6さんの言われたようになると思います。 よそのページから勝手にIMGタグで呼ばれた場合のことも考慮するなら TOPPAGEに飛ばすのではなく 「**.example.com 以外からの画像呼び出しは禁止です」 などと書かれた画像を表示するのも一つの手かも知れませんね
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
> ANo.4 > print "Location: http://www.○○○.com/koshin/\n\n"; > でいけそうな気がしますが、どうでしょう。 http://www.example.com/ index.html <img src="http://self.example.com/image.jpg"> と書かれたHTMLファイルに対して、 この画像をクリックするとhttp://self.example.com/に移動する、つまり http://www.example.com/index.htmlを <a href="http://self.example.com/"><img src="http://self.example.com/image.jpg"></a> に書き換えることだと思ってましたが。。。 <img>のsrcでLocationヘッダを使うと、 <img src="http://self.example.com/"> と同じになるんじゃないかと思ったわけですが。
- s1m00py
- ベストアンサー率0% (0/4)
>talooさん >> 画像リンクのクリックを、トップページに転送することはできないのでしょうか。 >こういうことはできません。 print "Location: http://www.○○○.com/koshin/\n\n"; でいけそうな気がしますが、どうでしょう。
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
表示させないようにするのは他の方の仰るとおり、アクセス禁止の処置で対応できますが、 他人のページ(HTML)を書き換えることはできませんので、 > 画像リンクのクリックを、トップページに転送することはできないのでしょうか。 こういうことはできません。
- s1m00py
- ベストアンサー率0% (0/4)
CGIでなら、HTTP-REFERERというリンク元情報が使えると思います。 $ENV{'HTTP-REFERER'}で参照できますので、 #自分のサイトのURL my $url = 'http://www.○○○.com/koshin'; if($ENV{'HTTP-REFERER'} =~ /^$url/){ #画像を表示する処理 }else{ #とっぷぺーじに飛ばす処理 } みたいな感じで実装可能ではないかと思います。 HTMLの画像URLのリンクを http://www.○○○.com/koshin/envchk.cgi?img=mainiti6-26.jpg みたいに張り替える必要があると思いますが。。。
- umasikajiro
- ベストアンサー率67% (545/803)
.htaccessが使えるなら rewrite ですね 「.htaccess Rewrite 直リンク禁止」などで検索してみてください 教えてGoo内で検索するなら http://oshiete.goo.ne.jp/search/search.php?status=select&MT=rewrite&from=shibo_sr_date&mt_opt=a&qatype=qa&c=205&st=all&sr=date&tf=all&dc=10&ct_select=1&change_s=current です。
お礼
こんにちは^^ .htaccessを使用してみたら、いくやってもエラーとなるのでサーバー会社に問い合わせてみましたところ、.htaccessは使用できないとのことでした。 早速違うサーバー会社に変更して、.htaccessにて試してみました。 結果は大満足の大成功でした! ありがとうございます^^ 自分でも色々検索して色々な手段を考えてやってみましたが、やはりスキルがないので途方に暮れてました・・ 本当に感謝しておりますm(__)m