0

Web ネットワーク用のシングル サインオン システムを構築しました。それはこのように動作します:

  • ユーザーは、ログインしたいサイト (「安全でないサイト」) のログイン リンクをクリックします。安全でないサイトの ID が URL で渡されます。
  • 彼は最終的にシステムの (「RAS」と呼ばれる) ログイン ページにたどり着きます。これは独自のドメイン上にあり、将来的には HTTPS を取得する可能性があるため、ユーザーは自分のデータが安全であることを確認できます。
  • ユーザーがログインします。ユーザー ID、安全でないサイト ID、および有効期限を保持する「セッション」がサーバー上で作成されます。
  • ユーザーのブラウザは安全でないサイトにリダイレクトされます。新しく作成されたセッションの ID は、URL パラメーターとして渡されます。
  • 安全でないサイトは、ユーザーのデータの要求を RAS に送信します。これには、セッション ID と、RAS 上の安全でないサイトを識別して認証する資格情報が含まれています。(ユーザーとそのブラウザは完全に除外されていることに注意してください)
  • ユーザーのデータ (パスワードなし) は安全でないサイトに返されます。次に、安全でないサイトはこれを独自のセッションに保存しますが、それは問題ではありません。

(動作を確認するには、cncguild.net などにアクセスし、上部近くにあるログイン リンクをクリックします)

ご覧のとおり、これはかなり安全です。安全でないサイトがユーザーのパスワードにアクセスすることは決してありません。

ただし、使いやすさに関しては、ログイン プロセスを安全でないサイトと統合したいと考えています。これを行う方法は、「ログインページに送信してリダイレクトする」全体を行う代わりに、ある種のポップアップを開くことです。現在、これを行うには3つの方法があります。

  • ログイン フォームにオーバーレイ div を追加します。ログインが完了し、クライアント側のコードがセッション ID を受け取るまで、AJAX を使用して RAS と通信します。次に、このセッション ID を独自のサーバー側コードに (更新または AJAX を介して) 送信することにより、ユーザー データの取得を処理できます。これにより最高のユーザビリティが得られますが、セキュリティ上の重大な落とし穴がいくつかあります。

    • 安全でないサイトの Javascript がパスワードにアクセスできます
    • ユーザーはソースをチェックして盗もうとしているかどうかを確認できますが、誰が真剣にそれを行うのでしょうか?
  • フォームを同じ HTML ドキュメントに配置する代わりに、オーバーレイ div にログイン ページの iframe を含めます。

    • これにより、安全でないサイトからパスワードが隠されます (ブラウザーに適切な iframe Javascript セキュリティ ポリシーがある場合)。
    • ユーザーにそうであることを示す明確なブラウザ インターフェイス マーカーはありません。したがって、悪意のある安全でないサイトの作成者は、まったく同じように見えるログイン フォームの独自のコピーを作成することができますが、実際には iframe にはありません。
    • 更新する以外に、セッション ID を安全でないサイトに戻す方法はありません。安全でないサイトにログインするための派手な AJAX はありません。
  • 実際のポップアップでログイン ページを開く (window.open)

    • URL と HTTPS アイコンが明確に表示されます
    • それは本当に醜いかもしれません。ユーザビリティが現在の動作方法に比べて実際に多くのメリットがあるかどうかはわかりません.

これらの 3 つの選択肢のそれぞれについて、あなたはどのような意見をお持ちですか? もちろん、私は最初のオプションの嘲笑を期待しています。それはセキュリティを粉々に引き裂きます。完全を期すために含めました。追加オプションも大歓迎

4

2 に答える 2

1

信頼とセキュリティが最も重要です。私は統合ログインをまったく行いません。

アドレスバーに表示されるドメイン名は、パスワードの送信先エンティティであると思います。この場合、私が安全でないサイトを信頼していなければ、あなたの SSO システムを使用していると彼らが主張しているかどうかに関係なく、私はそのサイトにログインしません。

これが、OpenID モデルが普及している理由です。ブラウザをリダイレクトすることでログインを統合します。これにより、エンドユーザーは何が起こっているかを認識し、制御できます。エンドユーザーは、ドメイン名がアドレス バーに表示される OpenID プロバイダーに対する信頼に基づいて、ログインを決定できます。

于 2009-11-25T20:12:31.130 に答える
0

  • 彼は最終的にシステムの (「RAS」と呼ばれる) ログイン ページにたどり着きます。これは独自のドメイン上にあり、将来的には HTTPS を取得する可能性があるため、ユーザーは自分のデータが安全であることを確認できます。
  • ユーザーがログインします。ユーザー ID、安全でないサイト ID、および有効期限を保持する「セッション」がサーバー上で作成されます。

ユーザーが RAS ログイン ページにパスワードを送信する場合、そのネットワーク上のすべてのマシンが信頼されていない限り、HTTPS を使用する必要があります。

ユーザー ID は暗号的に強力であり、HTTPS 経由で送信されますか? そうでない場合、ある信頼できない (安全でない?) サイトが別のサイトのユーザー ID を推測してデータを要求するのを止めるものは何ですか?

Re:

  • ユーザーのブラウザは安全でないサイトにリダイレクトされます。新しく作成されたセッションの ID は、URL パラメーターとして渡されます。

ユーザーが結果ページのリンクをクリックした場合に、この URL パラメーターが第 3 のサイトに送信されるリファラー ヘッダーに表示されないようにするものは何ですか?

Re:

したがって、悪意のある安全でないサイトの作成者は、まったく同じように見えるが実際には iframe にない独自のログイン フォームのコピーを作成する可能性があります。」

何をしても、HTML のトラステッド パスの問題を解決することはできません。フィッシング ドメインの設定は簡単すぎます。信頼できるパスを取得する唯一の方法は、組み込みの認証プロトコル (HTTP AUTH など) を使用することです。この投稿http://www.eros-os.org/pipermail/cap-talk/2009-February/012249.htmlでは、Web アプリケーションの信頼できるパス メカニズムについて説明しています。

Re:

  • 更新する以外に、セッション ID を安全でないサイトに戻す方法はありません。安全でないサイトにログインするための派手な AJAX はありません。

フレーム間で少量のデータを通信するには、さまざまな方法があります。http://ajaxian.com/archives/crossframe-a-safe-communication-mechanism-across-documents-and-across-domainsにリストされているスキームの 1 つがニーズに合っていますか?

于 2009-11-25T19:58:03.440 に答える