web-dev-qa-db-ja.com

適切なセッションプラクティス

ログイン、セッションID、およびセッションコンテンツがWebサイトに対して安全であることを保証するための良い方法は何ですか?

22
James T
  • セッションにはデータベースを使用します。
  • 権限が変更されたとき(ユーザーがログインしたときなど)にセッションを再生成します。
  • ページが読み込まれるたびにセッションを再生成します(オプション)。
  • URLでセッションIDを公開しないでください。
  • 機密データをセッションに公開しないでください。
21
VirtuosiMedia

VirtuosiMediaのリストに加えて:

  • サイト全体でTLS(SSL)を使用します。 HSTSヘッダーを使用します。
  • すべてのlink-hrefおよびform-actionにセッショントークンを追加するのではなく、セッションCookieを使用します。
  • CookieでsecureフラグとhttpOnlyフラグを使用します。
  • 使用 X-Frame-Optionsヘッダー。
  • セッションの内容を最小限に抑えます。たとえば、ユーザーIDのみを保存します。キャッシュが必要な場合は、セッションではなく、一般的なキャッシュレイヤーにキャッシュしてください。
  • サーバーだけが知っている秘密鍵を使用して、セッションCookieを暗号で署名します。署名済みデータに有効期限日時を含めます。リクエストごとにサーバーで署名と有効期限を確認してください。
9
yfeldblum

適切な時間の経過後にセッションを期限切れにします...リポジトリとして使用しているものからセッションを削除して、再利用できないようにします...

8
Gary

ユーザーID以外のパスワードやその他のユーザー情報をセッションに保存しないでください。

6
Mohamed

DNSSec を実装してHTTPSセッション Wifi経由の攻撃から または hardwired/switched を含むパブリックネットワークを保護します。

JavaScriptアクセスを必要としないCookieには HTTPSのみ を使用します

他のすべてのCookieにSecure属性を使用する

許可しない サイトのサードパーティのJavaScript

上記と同様に、サイトに 広告を提供しない

6