ファイルへの直リンクを禁止したいのですが、apacheの設定でPCからの直リンクはリファラで禁止することができました。

しかしながら、i-mode等の一部の携帯電話ではリファラを吐かないないため、制限していないページ経由も直リンクと認識されてしまいファイルにアクセスできません。
やりたいこと
①XXX.comドメイン経由では画像を表示
②直リンクは禁止
③PCおよび携帯すべてに対応

無理難題かもしれませんが、どなたかご教授ください。

回答の条件
  • URL必須
  • 1人3回まで
  • 登録:2006/05/07 15:13:47
  • 終了:2006/05/09 13:17:24

ベストアンサー

id:Sampo No.1

Sampo回答回数556ベストアンサー獲得回数1042006/05/07 17:43:22

ポイント100pt

http://q.hatena.ne.jp/answer

cgiやPHPは使用可能ですか?

使用可能なら、画像はファイルを直接表示させるのではなく、スクリプトから読み込んで出力させることで制御が可能になります。

<img src="hoge.jpg">

とやるところを

<img src="graphic.php?name=hoge">

のようにやるということです。

画像を呼び出す側のHTMLも、スクリプトで出力させましょう。このとき、画像表示スクリプトに合い言葉を渡すようにします。

<img src="graphic.php?name=hoge&code=45a73b012f">

のように。このコードはIPアドレスを暗号化するなどしたものを生成して付加するようにします。

画像表示スクリプトは、コードがリクエスト元IPと一致しないと画像を出力しない、という対応ができます。

その他の回答(3件)

id:Sampo No.1

Sampo回答回数556ベストアンサー獲得回数1042006/05/07 17:43:22ここでベストアンサー

ポイント100pt

http://q.hatena.ne.jp/answer

cgiやPHPは使用可能ですか?

使用可能なら、画像はファイルを直接表示させるのではなく、スクリプトから読み込んで出力させることで制御が可能になります。

<img src="hoge.jpg">

とやるところを

<img src="graphic.php?name=hoge">

のようにやるということです。

画像を呼び出す側のHTMLも、スクリプトで出力させましょう。このとき、画像表示スクリプトに合い言葉を渡すようにします。

<img src="graphic.php?name=hoge&code=45a73b012f">

のように。このコードはIPアドレスを暗号化するなどしたものを生成して付加するようにします。

画像表示スクリプトは、コードがリクエスト元IPと一致しないと画像を出力しない、という対応ができます。

id:tpichu No.2

tpichu回答回数304ベストアンサー獲得回数12006/05/07 17:59:26

ポイント40pt

i-modeなどではリファラを吐かないほか、リファラを故意に同じサイトからのものとする(この場合XXX.com)ことも可能です。

つまり、(1)自体はなかなか難しいでしょう。

ただ、発想を変えれば擬似的に可能です。

indexファイルを除くすべての直リンク防止をしたいものをひとつのディレクトリにまとめて入れ、indexファイルのリンクを貼りなおす。これで準備は可能です。

直リンクが多くなってきたらそのディレクトリごとごっそり名前を変更してやりましょう。直リンクしようとした相手は404 Not found.もしくは403 Permission denied.に悩まされるでしょう:)

これはディレクトリ構造そのものを変えているので、CGIみたいな複雑な知識は必要ありませんし、携帯電話にも有効です。

ただ、リンクを張り替えるのにテキスト置き換えソフトがあると便利です。


私愛用の置き換えソフト

http://www.vector.co.jp/soft/win95/util/se072729.html

id:villain No.3

villain回答回数174ベストアンサー獲得回数122006/05/08 03:37:54

ポイント40pt

リファラはクライアント側の設定などによっては偽装したりする

ことも可能ですのでリファラでの制御は完全ではないと思います。


それこそ、BASIC認証で制御するとか他の方法を使用した方がいい

でしょう。

id:yotaca No.4

よたか回答回数426ベストアンサー獲得回数462006/05/09 01:27:13

ポイント40pt

PHP等が使えて、許可したリンク元が管理できるのであれば、リンクにPostのパラメータを持たせることで振り分けることが可能です。

ただ、この方法だとPCからは丸見えなので、携帯端末とPCとを振り分ける部分も作る必要があります。

振り分けについてはこちらが参考になると思います。

http://specters.net/cgipon/

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません