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