2011-02-01 11 views
7

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

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

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

私は実装に関するサンプルを検索しましたが、すべての例は認証時に停止し、セッション管理については話しません!私はあなたのアプリケーションでセッションをどのように管理しているのか、可能であればアプローチを実装する際のベストプラクティスと懸案事項を知りたいと思います。

参照実装が分かっている場合は、私にリンクを提供してください。重要

答えて

14

まずあなたが心に留めておくべきいくつかの重要なセキュリティ上のアドバイス:あなたはまた、約http-only cookiesとどのようにconfigure them properly using PHPをお読みください

あなたの質問:

そのRESTアプリケーション、以来、私は セッション 管理のためにクッキーを使用する必要があります...右?

セッションを使用するのが最も安全です(もちろん)、もっと多くのものがあります。solutions to session managementです。しかし、クッキーのみを使用する場合(no ph $_SESSION)、クッキーを暗号化する必要があります。しかし、$ _SESSIONだけを使用するように助言します。

クッキーにはどのような値を設定しますか?

クッキーには何も保存しません。 $_SESSIONは、一意のあなたのためにクッキーを作成します(自動的に=あなたはそれについて考える必要はありません)。 $_SESSIONに入れたものはすべてサーバーに保存されているため、ユーザーはこれを読み取ることができません。セッションに保存したい情報はすべて保存することができますが、アプリケーション内の機密データ(ピン番号、クレジットカード、パスワードなど)を決して保管しないことをお勧めします。私はすでにあなたの$ _SESSIONがサーバーに保存されていることを教えていますが、ディスク(またはデータベース)に保存されているセッションと一意な識別子を持つCookieはguessed(spoofed)です。

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

セッション内で格納されている情報を調べることによってセッションを検証します。セッション内に少なくとも$_SESSION['id'] = $openid->identity;を格納すると仮定します。ユーザーがopenidを使用してあなたのウェブサイトにログインした後、regenerate your session(id)session fixationを避けるべきです。

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

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


これがすべての質問を説明してくれることを願っています。

PS:(:$私はそれがセッション固定に言及表示されていないが)

A session in the cookie jarはあなたのセッションへの基本的な概要を示します。

+0

このセッションでは、セッション管理について説明してくれてありがとうございます。あなたが提供した追加の情報リンクのための+5! –

+0

@Abdelあなたを歓迎します:P。 – Alfred

関連する問題