2012-04-07 28 views
0

私はOpenIDを使ってユーザーをサインするウェブサイトを持っています。私が使用しているライブラリは、ユーザーがログインしたときにユーザープロファイルを返します。このプロファイルには、ユーザーの電子メール、名前、アバターへのリンク、OpenIDプロバイダから返されたIDが含まれます。OpenIDを使用してログインしたままにするための安全な戦略

ログインしているユーザーを維持するための私の戦略はこれです:初めてでユーザーloggesが、私はOpenIDのの返されたID

  • に基づくハッシュコードを作成する場合

    • 私はこのハッシュコードを保存します2つのクッキー内のユーザーIDとともに表示されます。
    • ユーザーが、私はこれらのクッキーをチェックし、彼らが利用可能にしている場合、IDとハッシュコードを一致させよう、それが正しいなら、私は、ユーザーがログインし、私のウェブサイトに来るとき。

    今度はという問題がこれです。このクッキー情報が何らかの形でユーザーから盗まれた場合、ハッカーはユーザー自身の代わりに簡単にログインできます。ユーザーがログインしてユーザーのcookeisを更新するたびに新しいハッシュコードを作成できますが、他のブラウザー/コンピューターのCookieの情報は無効になります。

    StackOverflowのウェブサイトは、このような問題に悩まされないので、私は私のログイン戦略を確保し、ユーザーのためにログイン滞在する機能を追加するために、両方の何をすべきかを知っていただきたいと思います。

  • +0

    「ハッシュコード」とはどういう意味ですか?それが単にユーザーのopenid URLの安全なハッシュであれば、攻撃者は最初に元のCookieを入手する手間を省くことができます。 –

    +0

    StackOverflowウェブサイトがこの問題を抱えていないことをどう知っていますか? –

    +0

    @NickJohnsonあなたは正しいですが、私は彼らが推測することを困難にするために最善を尽くしています。しかし、どういうわけか、(あなたが言及したように)ランダムなセッションIDがより良い解決策になると思います。 –

    答えて

    2

    これを行うための標準的な方法は、セッションIDを取得し、それをクッキーとして送信します。データベースでは、そのセッションIDとともにユーザーの資格情報を保管することができます。ユーザーがログアウトすると、そのセッションIDを無効にすることができます。

    +0

    ありがとうございます。これは私が推測するより簡単でより良い解決法です。 (ハッシュアルゴリズム+塩に基づいて**ランダム**セッションIDを作成するのではなく、**ランダム**セッションIDを作成する) –

    1

    これは、クライアントがログインしたままにするためのすべてのメカニズムに問題はありませんか?あなたがgmailにログインして、あなたのクッキーを盗んで自分のブラウザに入れたら、ブラウザとブラウザを区別する方法がなく、Gmailにアクセスできます。あなたが提案しているような攻撃を止める方法はありません。(コンピュータにウイルスなどがなくてもクッキーを盗む可能性のあるユーザ以外は)

    +0

    この戦略(+ Cookieが盗まれたときにユーザーのハッシュコードを更新する方法)が十分安全であることを提案していますか? –

    +0

    はい、そうだと思います。それはクッキーの偽造を防ぎます。これは良いことです(私が取り組んでいるプロジェクトでも同様のことを実装しています)。機密性がある場合は自動ログインを無効にしない限り、クライアントブラウザが信用情報を盗まれることはありません。 –