セッション プロパティにデータベースの値を入力する理由はありますか?
1
$_SESSION['hash'] = query_row['hash']; //hash from database; unique to each user
次に、各ページで、セッションが存在するかどうかを確認します
if(isset($_SESSION['hash'])) && $db->checkLogin()
{
//user session is still valid
}
それによって:
function checkLogin($session_hash)
{
if($_SESSION['hash'])
{
//check if $session_hash is found in database
}
}
使用する代わりに
2
$_SESSION['islogged_in'] = true;
セッションが設定されているかどうかのみを確認します
if(isset($_SESSION['islogged_in']))
{
//user session is still valid
}
最初の方法を使用すると、保護が強化されますか? セッション値を「true」ではなく一意のものに設定するのが賢明ですか? $_SESSION[] 値をデータバンク データで検証するのは賢明ですか? そして、なぜそれはより安全なのでしょうか?
編集:固定とハイジャックからセッションを保護するための標準的な方法はどれか知っています。これは私の質問ではありません:)
方法1を使用する理由がまったく見つかりません(データバンクで検証するか、ユーザー名などの一意のデータでセッションプロパティを設定することさえあります..)私の知る限り、セッションプロパティはサーバー側に保存されているため、ユーザー/ハッカーそれらを変更することはできません。セッション保護 (ハイジャックと修正) は、セッション ID のみを保護します。これは、Cookie でクライアントに保存される唯一のものであるためです (したがって、変更することができます)。とにかく、インターネット上の多くのプログラマーがこれを行っているのを見ているので、私は尋ねています。