php
  • security
  • cookies
  • 2016-06-26 1 views -1 likes 
    -1

    私はこれに従おうとしていますルールユーザーがパスワードを変更すると、すべてのデバイスからログアウトする必要があります。ユーザーをログに記録するためのクッキーは、何から作られるべきですか?

    これは、パスワードをCookieに混ぜなければならないことを意味しますか?私のコードはここにあります。

    $hash = hash('sha512', $id.$email.$password); 
    $db->query("update users set cookie ='$hash' where email = '$email'"); 
    setcookie("login", $hash, time() + (20^20), "/"); 
    

    いいえ私がやっていることは正しいですか?実際に私はどこか読んでいるのでこれを求めています:

    パスワードをクッキーに入れないでください。

    もし私が上記の文章に従えば、私のルールはうまくいかないでしょう。実際には、ユーザーがパスワードを変更したときにログアウトするパスワードに基づいてクッキーが必要です。

    +1

    Downvoterなぜ教えていただけますか? –

    +0

    トークンを生成するのに 'random_bytes()'を使用していないので、私は賭けたいと思います。 –

    +0

    @ScottArciszewskiなぜ 'random_bytes()'を使うべきですか? –

    答えて

    1

    それは何のためのセッションです。実際、それらはクッキーですが、クッキーに保存されているブラウザIDだけです。サーバーには、すべてのユーザーIDのセッションが入っているテーブルがあります。しかし、攻撃者はIDをコピーできますが、サーバーに保存されているセッションの内容にはアクセスできません。

    <?php session_start; $_SESSION["pass"]="test";?> 
    

    同じことがハッシュになります。保存されたIDは攻撃者によってコピーされる可能性があります。トークンを使用します。 ユーザーがログインするとランダムなトークンがデータベースに追加され、セッションに格納されます。すべてのユーザーを追い出す場合は、これらのトークンを削除するだけです。余分なセキュリティのためにトークンを交換することがあります。それはトークンがちょうど数分間働くので、攻撃者にとってより難しくなります。

    関連する問題