1

私は暗号学者ではありません。別の方法を見つけたとしても、おそらく自分で解決しようとは思わないでしょう。資格情報の代わりにトークンを使用して、別のサイトから Web サイトにリモートでログインするこの方法についてどう思いますか?

これは別の自作であるため、誰かが実績のある解決策を指摘してくれると本当にうれしいです。

  • サイト A (ログインしたい) は、d4ffa3793[...]392258e6a などの秘密のコードを使用しています。

  • サイト B (ログインボタンのあるサイト) もこのコードを知っています。

  • サイト B で「ログイン」をクリックすると、B はこのシークレットを取得し、PHP の暗号化機能を使用して現在の時間のタイムスタンプ* で暗号化します。

  • 訪問者は結果のトークンとともにサイト A に送信され、サイト A はサイト B と同じことを行ってトークンを検証します。それらが一致すると、ユーザーがログインします。

*一部のサーバーでは時刻がわずかに異なり、トークンの生成と検証の間に時間がかかるため、現在の時間のタイムスタンプを使用しています。

それで、これはどうですか?何を提案しますか?

どうもありがとう!

4

1 に答える 1

0

アプリケーションがセキュリティに敏感でない場合(つまり、誰かがクロスログインメカニズムを利用して別のユーザーのアカウントを盗む方法を理解したとしても、大きな問題に陥ることはありません)、私はあなたが言ったようにそれを処理します:ユーザー名+タイムスタンプ+共有シークレットをハッシュ/暗号化してトークンを作成し、トークン+プレーンテキストのユーザー名+プレーンテキストのタイムスタンプをサーバーBに(リダイレクトURLのGETパラメーターを介して)送信し、サーバーBで正確性と鮮度を確認します。

機密性の高いアプリケーションの場合は、専門的なSSOソリューションを検討したいと思います。

自家製のソリューションを選択する場合に注意する必要があることの1つは、長さ拡張攻撃に対する特定のハッシュ(MD5など)の脆弱性です。また、の構文はcrypt間違いやすいことで有名です。

于 2013-01-24T11:15:32.753 に答える