问题:希望确保应用不会受到会话固定攻击,即攻击者强制用户使用一个预定义的会话id.
解决方案:要求使用会话cookie但会话标识符不追加到URL,另外要频繁地生成新会话ID:
<?php
ini_set('session.use_only_cookies',true);
//防止会话固定攻击
session_start(); //每隔30秒 生成一个新的PHPSESSID
if (!isset($_SESSION['generated']) || $_SESSION['generated'] < (time() - 30) ) {
echo "create<br/>";
//生成一个新的session id
session_regenerate_id();
$_SESSION = [
'user'=>'lemon',
'generated'=>time()
]; } else {
echo "ok<br/>";
print_r($_SESSION);
}
这种方案基本上可以消除会话固定攻击的风险,攻击者很难得到一个合法的会话id,因为会话id会频繁改变。