PHPのセッション登録のセキュリティについて
session ,session_id() , ID , session 。
1つ目の方法:標準的なHTTPリクエストにはhostなどのヘッダ必須情報のほかに、オプションのヘッダが含まれる場合があります.
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip, deflate, sdch
Accept-Language:zh-CN,zh;q=0.8,en;q=0.6,zh-TW;q=0.4
Cache-Control:max-age=0
Connection:keep-alive
Cookie:CNZZDATA155540=cnzz_eid%3D1361932985-1429108221-%26ntime%3D1429194688; _ga=GA1.1.530260614.1432539843; PHPSESSID=774v47f1jfgjetofpfns9bcgd1
Host:192.168.199.121
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.65 Safari/537.36
user_Agentこれに必要な情報は,あるユーザのブラウザがこれらのデータをサーバに送信すると,次に同じユーザが同じデータをサーバに送信し,2回送信したヘッダ情報が異なると,今回の要求が攻撃者から来たと判定する可能性があり,システムに次のコードを加えることができる.
if(md5($_SERVER['HTTP_USER_AGENT']) != $_SESSION['HTTP_USER_AGENT]){
echo'リクエストに問題がある';exit;
}
//初期化時にmd 5暗号化でuser_を保存Agent情報
$_SESSION['HTTP_USER_AGENT'] = md5($_SERVER['HTTP_USER_AGENT']);
第2の方法は、ヘッダ情報を用いてtokenを生成し、ユーザ以降の要求にこのtokenを加える
session_start();
$token = 'salt' . $_SERVER['HTTP_USER_AGENT'];
$_SESSION['token'] = md5($token);