あかまこ
トップへ

アクセス元(見ているあなた)の接続情報の表示

太古の昔、詐欺サイトで「あなたのブラウザ情報を取得しました。」というような文言と共に 脅しして使われていた方法(予測)を、PHPプログラミングなら簡単にできるよ、と安心させたい。そのプログラミングを解説。

HTTP_USER_AGENTCCBot/2.0 (https://commoncrawl.org/faq/)
REMOTE_HOSTec2-3-230-119-106.compute-1.amazonaws.com
REMOTE_ADDR3.230.119.106
REMOTE_PORT19548
REQUEST_URI/kakuninkun

PHPの環境変数を用いる

WEBサーバーではアクセス元(WEBブラウザでまさにこの画面を閲覧しているユーザー)のブラウザ情報やIP情報を取得できるのです。
欧米諸国ではかなり厳しいプライバシーポリシーがありますので、こういった情報を画面上に表示しているということは閲覧者が「プライバシーポリシーに同意」しているオプトインを取らねばなりません。
取得した情報は「こうこうこういう理由で扱いますよ」と、WEB管理者は明記せねばなりません。
ApacheやNginxといったWEBサーバーアプリケーションがアクセス元の情報を取得します。 当然ながら、WEBサーバーアプリケーションは PHPプログラムを起動させるのですが、取得したアクセス元情報は、PHP プログラム内で扱えます。
WEBサーバーアプリケーションが PHPを起動する際に、あらかじめ定義済みの「環境変数」として $_SERVER という変数(配列)に定義された状態でPHPが動きます。

ソースコードは以下。

<?php
$showKeys 
= array(
    
// $_SERVERから表示させるキー
     
'HTTP_USER_AGENT'
    
,'HTTP_REFERER'
    
// ,'HTTP_COOKIE'
    
,'REMOTE_HOST'
    
,'REMOTE_ADDR'
    
,'REMOTE_PORT'
    
,'REQUEST_URI'
);

if (isset(
$_SERVER) === true){
?>
<table class="table table-bordered">
<?php     foreach ($_SERVER as $key => $value) { ?>
<?php         
if (in_array($key,$showKeys,true) === false) continue; ?>
    <tr>
        <td><?php echo $key;?></td><td><?php echo is_array($value) ? nl2br(htmlentities(implode("\n",$value))) : htmlentities($value);?></td>
    </tr>
<?php     ?>
</table>
<?php ?>


こういった情報を取得してデータベースに保存したからといって、悪いことに使いようがないと思われますが・・昔はこういう手口でアクセスしたユーザーを「脅す」詐欺サイトが横行したみたいです。
また、現在はそういった接続情報やクッキー情報をデータベースに保持しているサイト運営者側のほうがリスクが高いのです。
EU圏ではクッキー情報はれっきとした個人情報として扱い、サイト側で情報を「保持しない」「削除する」ことを徹底していることを明記し、実際にそういった取り組みをしている運営・企業がほとんどです。