短い答え
優先度順のルール:
- ルール1.ユーザー入力を信頼しない:Cookieは安全ではありません。機密データのセッションを使用します。
- ルール2.ユーザーがブラウザーを閉じたときに永続データを残す必要がある場合は、Cookieを使用します。
- 規則3.ユーザーがブラウザーを閉じたときに永続データを残す必要がない場合は、セッションを使用します。
- ルール4.詳細な回答を読んでください!
ソース:https : //www.lucidar.me/en/web-dev/sessions-or-cookies/
詳細な回答
クッキー
- Cookieはクライアント側(訪問者のブラウザ)に保存されます。
- Cookieは安全ではありません。Cookieの内容の読み取りと書き込みは非常に簡単です。
- Cookieを使用する場合は、ヨーロッパの法律(GDPR)に従って訪問者に通知する必要があります。
- 有効期限を設定できますが、ユーザーまたはブラウザで変更できます。
- ユーザー(またはブラウザー)は、Cookieの使用を拒否(設定)できます。
セッション
- セッションはサーバー側に保存されます。
- セッションはCookieを使用します(以下を参照)。
- セッションはCookieより安全ですが、無傷ではありません。
- 有効期限はサーバー構成で設定されます(php.iniなど)。
- デフォルトの有効期限は24分、またはブラウザを閉じたときです。
- ユーザーが新しいページを更新またはロードすると、有効期限はリセットされます。
- ユーザー(またはブラウザー)は、Cookie、したがってセッションの使用を拒否(設定)できます。
- 法的には、クッキーについても訪問者に通知する必要がありますが、先例がないことはまだ明らかではありません。
適切な選択
セッションはcookieを使用します!セッションデータはサーバー側に保存されますが、UIDはクライアント側のCookieに保存されます。これにより、サーバーは特定のユーザーを適切なセッションデータと照合できます。UIDは保護されており、ハッキングは困難ですが、不死身ではありません。機密性の高いアクション(電子メールの変更またはパスワードのリセット)については、セッションにもCookieにも依存しないでください。アクションを確認するためにユーザーパスワードを要求します。
機密データは決してCookieに保存しないでください(電子メール、暗号化されたパスワード、個人データなど)。データは外部のコンピューターに保存されていることに注意してください。コンピューターがプライベート(教室または公共のコンピューター)でない場合、他のユーザーがCookieのコンテンツを読み取る可能性があります。
リメンバーミーデータはCookieに保存する必要があります。そうしないと、ユーザーがブラウザーを閉じたときにデータが失われます。ただし、パスワードやユーザーの個人データを「remember-me」Cookieに保存しないでください。ユーザーデータをデータベースに保存し、このデータを、Cookieに保存された暗号化されたID /キーのペアにリンクします。
以前の推奨事項を検討した後、次の質問は最終的にCookieとセッションのどちらを選択するのに役立つかです。
ユーザーがブラウザを閉じたときに永続的なデータを残す必要がありますか?
- 答えが「はい」の場合は、Cookieを使用してください。
- 答えが「いいえ」の場合は、セッションを使用してください。