CakePHP の Session にデフォルトで格納されている Config.userAgent について

CakePHP では SESSION にデフォルトで以下のようにユーザーエージェントが含まれています。IP アドレスとユーザーエージェントを使用したハッシュを作成する場合などに便利です。

1
2
3
4
5
6
7
8
9
Array
(
    [Config] => Array
        (
            [userAgent] => e0bdc677047ebc3bbf4f6f72d12db0a6
            [time] => 1354941999
            [countdown] => 10
        )
)

ただし、このユーザーエージェントはハッシュされた値で、どのように生成されたか分かりません。どのようなタイミングで変更することが可能、あるいは変更されてしまう恐れがあるかについて把握したいので調べました所、下記ファイルにこれに関するコードがあります。

  • lib/Cake/Controller/Component/SessionComponent.php
  • lib/Cake/Model/Datasource/CakeSession.php

この中のモデルの CakeSession.php の124行目から下記のようなコードがあります。おそらくこちらで生成された値が入っているかと思います。ユーザーエージェントと Security.salt (core.php や人によっては bootstrap.php で設定済み) を md5 ハッシュした値のようです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
 * Constructor.
 *
 * @param string $base The base path for the Session
 * @return void
 */
	public static function init($base = null) {
		self::$time = time();
 
		$checkAgent = Configure::read('Session.checkAgent');
		if (($checkAgent === true || $checkAgent === null) && env('HTTP_USER_AGENT') != null) {
			self::$_userAgent = md5(env('HTTP_USER_AGENT') . Configure::read('Security.salt'));
		}
		self::_setPath($base);
		self::_setHost(env('HTTP_HOST'));
	}

Config.userAgent のハッシュ値を全て変更したい場合は Security.salt を変更すれば良いという分けですね。

コメント

コメントは受け付けていません。