7

私はRESTfulアプリケーションを構築しています。ユーザー認証にOpenIDを使用する予定です。現在、OpenID認証にLightOpenIDを使用しており、ユーザーを認証できます。

私の質問は次は何ですか?認証後!

  1. そのRESTアプリケーションなので、セッション管理にCookieを使用する必要があります。
  2. Cookieにはどのような値を保存しますか?
  3. セッションとユーザーのログアウトを検証するにはどうすればよいですか?

実装に関する例を検索しましたが、すべての例は認証で停止し、セッション管理については説明していません。アプリケーションでセッションを管理する方法と、可能であれば、アプローチを実装する際のベストプラクティスと懸念事項について知りたいと思います。

リファレンス実装を知っている場合は、リンクを教えてください。

4

1 に答える 1

14

重要:

まず、覚えておくべき重要なセキュリティに関するアドバイスをいくつか示します。

あなたの質問:

そのRESTアプリケーションなので、セッション管理にCookieを使用する必要があります。

セッションを使用するのが最も安全(最良)ですが、もちろん、セッション管理にはもっと多くの解決策があります。ただし、Cookieのみ(phpなし$_SESSION)を使用する場合は、もちろんCookieを暗号化する必要があります。ただし、$_SESSIONを使用することをお勧めします。

Cookieにはどのような値を保存しますか?

クッキーには何も保存しません。$_SESSIONユニークなクッキーを作成します(自動的に=>それについて考える必要はありません)。入力したものはすべて$_SESSIONサーバーに保存されるため、ユーザーはこれを読み取ることができません。セッションに保存したい情報は何でも保存できますが、アプリケーションに機密データ(PIN番号、クレジットカード、パスワードなど)を保存しないことが最善であることに注意してください。$ _SESSIONがサーバーに保存されていることはすでに説明しましたが、ディスク(またはデータベース)に保存されているセッションと一致する一意の識別子を持つCookieを推測(なりすまし)することができます。

セッションを検証するにはどうすればよいですか?

セッション内に保存されている情報を調べて、セッションを検証します。少なくとも$_SESSION['id'] = $openid->identity;セッション内に保存すると思います。ユーザーがopenidを使用してWebサイトにログインした後、セッション固定を防ぐためにセッション(id)を再生成する必要があることに注意してください。

ユーザーをログアウトするにはどうすればよいですか?

session_destroyを呼び出すだけで、セッション内に保存されているすべてのデータが削除されます。


これがあなたのすべての質問を説明したことを願っています。

PS:

cookie jar内のセッションは、セッションの基本的な紹介を提供します(ただし、セッション固定については言及されていません:$)。

于 2011-02-01T09:20:37.727 に答える