解説

セッションハイジャックに対応するための関数。
更新日:2016年12月31日
セッションIDを盗まれても、アクセスされるたびにセッションIDが更新されるので、悪用されることを防ぐことができる。

使用方法

使用方法


$ua = $_SERVER['HTTP_USER_AGENT'];
$results['browser'] = '';
$results['version'] = '';
if( preg_match( '/Trident\/(\d{1,}(.\d{1,}){1,}?)/i', $ua, $mtcs ) )
{
	$results['browser'] = 'msie';
	if( (float)$mtcs[1] >= 7 )
	{
		if( preg_match( '/rv:(\d{1,}(.\d{1,}){1,}?)/i', $ua, $mtcs ) )
		{
			$results['version'] = (float)$mtcs[1];
		} else {
			$results['version'] = 11.0;
		}
	} elseif ( (float)$mtcs[1] >= 6 ) {
		$results['version'] = 10.0;
	} elseif ( (float)$mtcs[1] >= 5 ) {
		$results['version'] = 9.0;
	} elseif ( (float)$mtcs[1] >= 4 ) {
		$results['version'] = 8.0;
	}
}
if( empty( $results['browser'] ) )
{
	if( preg_match( '/MSIE\s(\d{1,}(.\d{1,}){1,}?);/i', $ua, $mtcs ) )
	{
		$results['browser'] = 'msie';
		$results['version'] = (float)$mtcs[1];
	}
}

// IE10未満の場合
if( !( ( $results['browser']=='msie' ) && ( $results['version'] < 10.0 ) ) )
{
	// セッションハイジャック対策関数コール
	if( !ResessionIDCounterplan() )
	{
		return false;
	}
}

パラメタ

なし。

戻り値

boolean
true … 正常終了
false … エラー

コード

セッションハイジャック対策関数


/*--------------------------------------------------------------------------------------------------------------
セッションハイジャック対策関数
	セッションハイジャックに対応。
--------------------------------------------------------------------------------------------------------------*/
function ResessionIDCounterplan()
{
	// 現在のセッションIDを取得
	$oldSession = session_id();

	// セッションIDを再作成し、古いセッションを削除
	if( !session_regenerate_id( true ) )
	{
		return false;
	}
	
	// 新しいセッションIDを取得
	$newSession = session_id();

	// セッションデータを書き込んでセッションを終了する
	session_write_close();

	// セッションを開始
	session_start();

	return true;
}

必須要素

情報
  • なし。

注意事項

重要
  • IE10未満には対応していません。

更新履歴

2015/06/13 … 浅野 利博
新規作成

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.