PHPセッション用の次のPHPコードがあり、本当に安全かどうか疑問に思っています。
// Session Security
ini_set('session.cookie_httponly', '1');
ini_set('session.session.use_only_cookies', '1');
ini_set('session.entropy_file', '/dev/urandom');
ini_set('session.cookie_lifetime', '0');
ini_set('session.cookie_secure', '1');
session_name("nameofsite");
session_set_cookie_params(0, '/', '.domain.com');
if (!isset($_SESSION))
session_start();
if (!isset($_SESSION['id'])) {
header("Location: /home.php");
die();
}
「ユーザー」がログインすると、次のようにして新しいセッション ID を再生成します。
if ($worked['loginname'] == sha1($username) && $worked['password'] == sha1($password))
{
echo Message("Please wait, you are being logged in.");
echo "<meta http-equiv='refresh' content='1;url=index.php'>";
$_SESSION['id'] = $worked['id'];
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
session_regenerate_id(true);
}
$_SERVER['REMOTE_ADDR'] が $_SESSION['ip'] と一致するかどうかも確認する必要がありますか?
セッションが乗っ取られたり盗まれたりしないように、安全なサイトが欲しいだけです。