私はこれが何十億回も尋ねられていることを知っていますが、私は自分のコーディングのセキュリティについて非常に偏執的/OCDです. 私は小さなプロジェクトに取り組んでいます。セッション データには以下のみが含まれます。
user_id 1
user_name MyUsername
logged_in true
csrf_token 87cc51ee94178df79cccce2aebc45d53
これが私のコードです。小規模な CMS で使用するのに十分な安全性はありますか?
session_start();
ini_set('session.cookie_httponly', 'On');
ini_set('session.cookie_secure', 'On');
ini_set('session.use_cookies', 'On');
ini_set('session.use_only_cookies', 'On');
$rand = rand(1, 10);
if ($rand != 1 || $rand != 3 || $rand != 5)
session_regenerate_id();
$user_ip = md5($_SERVER['REMOTE_ADDR']);
$user_agent = md5($_SERVER['HTTP_USER_AGENT']);
if (isset($_SESSION['user_ip'], $_SESSION['user_agent'])) {
$session_user_ip = $_SESSION['user_ip'];
$session_user_agent = $_SESSION['user_agent'];
if ($session_user_ip != $user_ip || $session_user_agent != $user_agent) {
unset($_SESSION);
session_destroy();
die('Error');
}
} else {
$_SESSION['user_ip'] = $user_ip;
$_SESSION['user_agent'] = $user_agent;
}
次に、セッションを呼び出します。
$_SESSION['user_id'] = 1;
$_SESSION['user_name'] = 'MyUsername'; // etc.
追加情報
セッションデータを使用して、ユーザーが何かを行う権限を持っているかどうかを確認します。例:if ( user_has_perm( $_SESSION['user_id'] ) )
事前にご協力いただきありがとうございます。