まず、これをお話ししましょう。 100%安全なものはありません。気密なものはなく、神聖なものもありません。十分な動機があれば、攻撃者はあなたが置く可能性のあるすべてのサーバー側の防御を破ります(HTTPSを使用している場合を除きます。これは別の話です)。
Cookieを使用することもできますが、Cookieは非常に公開されており、簡単に変更できます。プライベートデータやアクセスレベルをCookieに保存しないでください。攻撃者によって簡単に盗まれたり変更されたりするため。
セッションも100%安全ではありません。サーバーがクライアントを識別するために使用するセッションIDは、2つの方法のいずれかで送信されます。 $ _GET変数(悪い)、またはcookie(良いですが、それでもかなり悪い)。つまり、セキュリティで保護されていないWiFiを介して管理者としてログインしている場合、熟練した攻撃者(熟練した攻撃者とは、単純なHTTPスニファをダウンロードしたpr0 haxx0r)がセッションIDを簡単に盗む可能性があります。また、パスワードを取得していない間、サーバーは攻撃者を誤ってあなたとして識別し、あなたが持っている/持っていた可能性のあるアクセスを攻撃者に許可します。
じゃあ何をすればいいの?ほとんどの場合、セッションは安全です。安全でないネットワーク(バス、インターネットカフェなど)でログインしないようにユーザーにアドバイスしてください。ユーザー認証を長期間維持できるようにする場合は、Cookieが必要です。必要な場合は通常、2つのCookieシステムを使用します。
userid=12345
hash=password_hash($userid . $hashed_password, PASSWORD_DEFAULT)
次に、一致するものがありますが、ユーザーの詳細は明らかにされませんでした。
しかし、私が言ったように、結局のところ、本当に本当にユーザーを保護したいのであれば、この回答に書かれている他のすべてに加えて、HTTPSを取得してください。