最も人気のある学校は、セッションIDをランダムに生成し、ログイン時にセッションIDを再生成し、既存のユーザーのセッションIDを定期的に再生成することです。
私は別の解決策を使用していますが、私は経験豊富なPHPプロではありません。私は紛失している恐れのあるセキュリティホール(または2つ以上)が懸念されます。
もしあなたが次のことを見て、それがどのように危険にさらされているか教えていただけたら、私はそれを感謝します。
スクリプトは、ユーザーのマシンに関連付けられたセッションIDを作成します。私は現在の日付をハッシュに含めようと考えていましたが、夜勤の労働者は真夜中にログアウトするでしょう。 )
無料のWiFiを使用して、同じOSとブラウザを持つ2人のユーザーがコーヒーショップに座っていると、IPアドレスを使用すると悪用されることがわかりました。これは内部のMISのためであり、各ユーザはそれぞれ独自の静的IPアドレスを持ちます。彼らがウェブからアクセス可能にすることを後で決めるなら、私は困っている!しかしそれは仕様の一部ではありませんでした。
// Set the session ID
$session_hash = md5($_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_HOST'] . $_SERVER['REMOTE_ADDR']);
// Compare against session ID received from user
if (session_id() != $session_hash)
{
session_destroy();
unset ($_SESSION);
session_id($session_hash);
session_start();
}
else
{
// Attempt to load user details from database if $_SESSION['user_ID'] is set.
}
すべての建設的なコメントは歓迎され、評価されました!
私はすべてが賢いと思っていました。あなたの意見は完全に分かりますが、PHPの組み込みセッションはそれほど安全ではないと考えていました。 – Kalessin