リファラーは容易に偽装されるそうですが、対策はないのでしょうか?


PHPでシステムを組んでいて、疑問を持ちました。

一番うれしい解決は、「正式なリファラー」を取得することです。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2006/12/04 02:24:45
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:sadajo No.1

回答回数4919ベストアンサー獲得回数49

ポイント27pt

http://nucleus.datoka.jp/?itemid=764

リファラースパム 対策

id:dingding

ありがとうございます。

2006/12/04 02:24:28
id:b-wind No.2

回答回数3344ベストアンサー獲得回数440

ポイント27pt

リファラーはブラウザから送信されるデータなのでそれ単体で正確性を保証することは不可能です。


リファラーが保証されるのは、企業内のクライアント等で設定がいじれないようになっているか自作のソフトウェアのみで通信を許可する場合などのみです。

http://www.xucker.jpn.org/web/referer.html

id:dingding

なるほど。もともと対して当てにならないものナですね。

2006/12/04 02:23:54
id:ardarim No.3

回答回数897ベストアンサー獲得回数145

ポイント26pt

HTTPで通信をする場合、サーバ側(この場合php)とクライアント側(ブラウザなど)が通信を行うことになります。サーバ側が取得できる情報は、クライアントが送ってくるものだけです。サーバ側はクライアントの送ってくる情報を信じるしかありません。


「正式なリファラー」とは、偽装されない、ユーザがブラウザ上で実際に飛んできたページを取得したいという意味だと思いますが、

上記の通り、HTTP通信にはサーバとクライアントしかいませんので、クライアント側がリファラーを偽っている場合は、どうしようもありません。(サーバとクライアントの間にはプロキシーなどが挟まることがありますが、「本当の」リファラーを知りうるのはクライアントのみであるという点では同じです)


ただし、自分が管理しているドメイン内であれば、セッションIDを使うなどすればページの遷移は管理できる可能性があります。ただし、他者が管理しているドメインから飛んできた場合などは、リファラーしか信頼できるものがありませんのでどうしようもありません。

URLはダミー。

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

id:dingding

ありがとうございます。

2006/12/04 02:24:25
  • id:karasimiso
    リファラ内容が指すページを解析して自サイトへとリンクがあるかどうかで判定すれば、多少は正式かどうか判別できませんかね、、、(やっぱ無理?)

    リファラにデジタル署名でもつけられれば話は別ですけど。

  • id:b-wind
    > リファラ内容が指すページを解析して
    無理じゃないけど無意味。
    たとえば全クライアントが固定値でそのリファラーを送ってきた場合を考えてみてください。

    > リファラにデジタル署名でもつけられれば話は別ですけど。
    デジタル署名を付けるのはあくまでクライアントなんで、詐称したものにデジタル署名が付くだけ。
    通信中の改ざん防止なら HTTPS で十分。
  • id:u1p
    それ以前に「そんなにRefererを偽装してまで見に来られるようなページなのか」と言う疑問があります。
    クイズなどのヒントページなどをちゃんと読んでから辿って欲しいなど、「Refererが正しくないと困るようなページなら他の手段を考えるべき」とも思います。
  • id:bsheep
    正しいリファラを何に使いたいかを突き詰めれば何をすればいいかが見えてくると思います。
    基本的にリファラは自己申告のものであると考えなければなりませんね。

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

トラックバック

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

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

回答リクエストを送信したユーザーはいません