あなたの方法は、複数のセキュリティ上の脆弱性にさらされています: 誰でも管理者アクセスを取得でき、侵入者 (非管理者、非ゲスト) が Cookie 値を変更して自分自身を完全に誤認することができます。Quentinとpinouchonの答えに基づいて、セッションを使用してユーザーアクセスレベルを制御する必要があります...これは、クライアント側にフラグを保存するよりも常に安全です。このように、クライアント側に保存される唯一の値はセッション ID であり、これを使用して既存のセッション値を取得するか ( $_SESSION['privilege_level']
)、ユーザー権限のデータベースに対して使用できます。
これを投稿することさえ少し気が進まないのですが、何らかの理由でセッションを絶対に使用できない場合は、少なくとも、暗号化されていない/ハッシュされた Cookie 値を送信しないようにする必要があります。セッションを使用するほど安全ではありませんが、 X:Y:Z のようなものを保存できます。ここで、 x は暗号化されたユーザー ID、 Y は暗号化された許可フラグ、 Z は X,Y,User Agent を含む巨大な塩漬けハッシュです。 、IP など。次に、ユーザーが何かを行うたびにハッシュを再作成し、それが Cookie のハッシュと一致することを確認します (これにより、誰かが他の誰かの役割を引き継ぐのが少し難しくなり、さらに難しくなります)ユーザーが自分の役割を手動で変更できるようにします。