PHPでログインシステムを作成していますが、Cookie内のユーザー情報文字列を最適に保護する方法を知りたいです。どういうわけかキーで文字列を暗号化することを考えていましたか?これが最善の方法ですか?私はこれにちょっと新しいです。
前もって感謝します。
PHPでログインシステムを作成していますが、Cookie内のユーザー情報文字列を最適に保護する方法を知りたいです。どういうわけかキーで文字列を暗号化することを考えていましたか?これが最善の方法ですか?私はこれにちょっと新しいです。
前もって感謝します。
機密情報をCookieに保存しないでください。ログインしたユーザーを自分のアカウントに接続するためのセッションIDハッシュを保存します。
アーロン・ハルンはあなたに正しい答えを持っています。データはすべてサーバー側であるため、そのデータがクライアント/ブラウザ/ユーザーに到達することはないため、セッションに保存する限り、基本的にそのようなデータを暗号化する必要はありません。PHPでセッションを作成すると、Cookieが処理されるため、心配する必要はありません。ほとんどの場合、Cookieを処理する必要はありません。セキュリティでは、Cookieの処理は有害です。
フォームの非表示フィールドにユーザー名を実際に保存する、ずさんなサイトを見たことがあります。これにより、誰でもそのフォームのローカルコピーを編集して、好きなユーザーとしてアクションを実行できます。これは明らかな問題のように思えますが、Cookieはそれ以上のものではありません。
自作の認証システムを設計するのが本当に良い考えだと本当に思うなら、最初にデータベースを設計する必要があります。プレーンテキストのパスワードを保存せず、代わりにハッシュ(md5、sha-1など)を保存します。その時点で、パスワードごとにソルト(ハッシュする前にユーザーのパスワードに追加するランダムな文字列)を生成しても問題はありません。後で必要になるため、そのソルトをパスワードハッシュと一緒に保存します。これにより、辞書ハッシュ攻撃、つまりレインボーテーブルが防止されます。
安全な情報をCookieに保存しないでください。Cookieはユーザーのコンピューターにテキスト形式で保存されます。機密情報をCookieに保存しない理由はたくさんあります。
覚えておくべきユーザー名やセッションIDなどのみをストックする必要があります。
ユーザーのセッションではなくCookieに情報を絶対に保存する必要がある場合は、 HMACを使用して署名することを検討してください。hash_hmac関数は、最新のPHPバージョンに組み込まれています。
「rememberme」機能のユーザーログインを保存する場合は、ユーザーのIDと、データベースでのみ使用可能な情報のハッシュの両方を保存します。たとえば、ログイン名とパスワードをハッシュして、それをユーザーのIDと一緒にCookieに保存することはかなり安全です。ユーザーがパスワードを変更すると、そのメソッドでログインしているすべてのマシンが無効になり、ユーザー名とパスワードのハッシュが一致しないため、CookieのIDを変更してログインしたままにする方法はありません。 。
あなたは無料でセッションを取得します!これはサーバー側に保存されたデータであり、PHP/選択したフレームワークによって自動的に処理されます。クライアントのセッションに保存されているランダムなUIDに関連付けられているデータをセッションに入れるだけです。クライアント側では、これはセッションCookieです。このIDは自動的に生成され、動作を細かく調整できますmanually
。
クライアント側に保存されたデータは決して安全ではなく、実際の暗号化は利用できません。ログインしたユーザーを追跡するためにとにかく必要なセッション。大量のデータがある場合は、IDを使用して、他のデータストア(DB、XMLなど)から関連データを識別できます。