phpのリファラはアクセス元がわかる!取得から書き換えまで解説

こんにちは!独学プログラマー&ライターのつぶらやです。

突然ですが、webサービスを作ると作ったサービスに人が訪れますが、その人達はどこから訪れてくるのでしょうか

そのカギを握るのが、リファラというものです。

リファラ?なにそれおいしいの?

という初心者だった私ですが、リファラについて学んできた事をお伝えしたいと思います。

リファラでわかる、君がどこから来たのか

どうやってサービスに来たのか。

どこかのサイト経由で辿り着いたのか、直にurlを知ってアクセスしたのか。

この「どこかのサイト経由」の「どこか」=リファラです。

リファラを知る事ができると、色々とアクセス数を増やす施策を考えたりも出来ます。

早速サンプルプログラムで取得してみましょう。

自分のサービスURLが、http://yyyyy.com/だったとします。

<?php
function httpsGet{
    $http_referer = $_SERVER['HTTP_REFERER'];
    var_dump($http_referer);
}
?>


結果

http://xxxxx.com/


http://yyyyy.com/にアクセスする前に、http://xxxxx.com/に居たという事が分かりました。

これがリファラの取得方法です。

簡単に取得できましたね。

取得できない事もある?リファラの注意点

簡単に取得できるリファラですが、実は確実なものではありません。

リファラが取得できない場合

リダイレクトをして移動してきた、アプリから移動してきた場合は正しく取得できないと言われています。

また、httpsのサイトからhttpのサイトへ移動してきた場合も取得できません。

この事から、リファラがある事を前提とした機能などは作成するべきではありません。

ただし、リファラによってページの出し分けや、セキュリティの面からリファラを活用する事も出来ますので上手く使い分けることを考えましょう。

リファラが偽装される場合

次の項目でお話しますが、リファラは簡単に偽装されます。

リファラの内容を過信しすぎた機能はやはり作るべきではありません。

自分が思った通りの手順ですべての人が機能を利用してくれるならばいいのですが、悲しい事に悪意を持って来るユーザーもいらっしゃいます。

またURLの中に個人情報のパラメータを入れているとリファラの流出が、重大な個人情報流出にもなり得る時代です。

http://xxxxx.com/?age=30&zip=1111111

上記のようなURLがあった場合、ageから年齢、zipから郵便番号が予想できます。

開発者としてリファラの取り扱い、URLの取り扱いには気を付けたいですね。

リファラの書き換え(偽装)はできるの?

リファラをユーザー側からとプログラム側から書き換える方法をお話します。

ユーザー側から書き換える

リファラはユーザー側から以下のようなツールを使用して、簡単に偽装することが出来ます。

参考サイト↓
クロームブラウザのプラグイン Referer Control
FireFoxブラウザのプラグイン Smart Referer

プラグインを使用すれば書き換えだけでなくリファラの送信等について制限もできるようです。

プラグインを入れなくても、ブラウザ側から以前よりは削減されているという話も聞きます。

プログラム側から書き換える

こちらはあまり使用する事はないかもしれませんが、file_get_contentsを使用してサイトから情報を取得してくる場合、リンク元としてリファラを書き換えるサンプルコードの紹介です。

これを動かすとheader情報の中にリファラが入っている事が分かります。

http://yyyyy.com/が、情報を取得しようとしているサイトです。

リファラはhttp://xxxxx.com/に書き換えます。

$referer = "http://xxxxx.com/";

$opts = array( // 書き換える情報をまとめる
'http' => array(
'method' => "GET",
'header' => "Referer: ". $referer;
)
);
$context = stream_context_create($opts);

$uri = 'http://yyyyy.com/';

file_get_contents($uri, false, $context); // http://yyyyy.com/の情報を取得

上記の例だと、http://yyyyy.com/に対してのリファラにhttp://xxxxx.com/を設定することが出来ました。

file_get_contentsの使用方法については以下を参考にしてください。

まとめ

リファラ(referer)。

取り扱いについては、色々と気を付けなければいけないものです。

開発時にはくれぐれも、URLに個人情報などのパラメータを持つという事はしないようにしましょう。

それでは、また。

LINEで送る
Pocket

ITエンジニアへ転職したい方におすすめ

自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

侍ワークスは、独自案件を多く掲載しているだけでなく、

・応募から就業まで一貫したサポート

・就業後もアフターフォロー

といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

書いた人

つぶらや

つぶらや

独学PG&SE、東京在住30代女性。
誰でもプログラマーになれるがモットーで、わかりやすい記事を目指しています。