4

私は、顧客のすべてのサブスクリプションと私の会社でのメンバーシップを表示するユーザー アカウント「メンバー センター」を持っています。これはhttps://secure.example1.com/membercenter/にあります。

私は実際の会員サイトである別のサイトを持っています。これはhttp://www.example2.com/にあります。(同じ専用サーバーですが、各サイトは異なるドメインにあります。

リンクにユーザーのユーザー名とパスワードを含めずに、メンバーシップ サイトに簡単にログインできるようにしたい。

だから私が思いついたのはこれです:

ユーザーがメンバーシップの [ログイン] リンクをクリックすると、ユーザー ID + UNIX タイムスタンプの md5 ハッシュを作成し、それをユーザー ID とタイムスタンプと共にデータベース テーブルに追加します。

次に、 http://www.example2.com/login? hash=(ハッシュ)にリダイレクトします。

example2 のログイン スクリプトはハッシュを取得し、同じテーブルで検索します。ハッシュが存在する場合、ハッシュと共に保存されているユーザー ID を使用して顧客データベースからユーザー名とパスワードを取得し、それをサイトの既存のログイン関数に渡すと、ユーザーはログインします。

このハッシュ ログイン スクリプトが実行されると、最初に 5 分より古い行が削除され、次に渡されたハッシュ値がチェックされます。ハッシュが見つかった場合は、ユーザーをログインさせ、使用されたハッシュをテーブルから削除します。これは、テーブルに 5 分より古いハッシュが存在しないことを意味します。テーブルにハッシュが残っている (はずである) 唯一の場合は、ユーザーがリンクをクリックした後、secure.example1.com から www.example2.com に移動できなかった場合です (たとえば、インターネットがすぐ右でダウンします)。次に、example2.com を解決する DNS の問題など)。5 分間の有効期限があるということは、そこに座って、リダイレクトされた URL を再読み込みできることを意味します。

ユーザーがリダイレクトされると、ハッシュ値が表示されます。

secure.example2.com からログイン リンクがクリックされるたびに、新しいハッシュ値が計算されて保存されます。

私の質問は...明らかなものが欠けていますか?これをどのように壊したり、ハッキングしたりしますか? 自分のサイトに大きなセキュリティ ホールを作成しただけですか?

ありがとうSOハイブマインド!

編集: これは、www.example2.com にアクセスし、ユーザー名とパスワードを使用してフォームにログインする通常のモデルに追加されます。

EDIT2: tobyhede re: ハッシュのスニッフィングへの応答。攻撃者は、ハッシュが使用されると削除されるため、ユーザーが www.example2.com のログイン スクリプトにアクセスできないようにする必要もあります。それを止めることができた場合、ハッシュも 5 分以内に使用する必要があり、そうしないと自動的に削除されます。

EDIT3: Re: 独自のハッシュを生成する攻撃者: ハッカーは、これらのハッシュをデータベースに挿入し、有効なユーザー ID を含める必要があります (ユーザーは自分のユーザー ID を知りません)。彼らはどうやってそれをするでしょうか?ハッシュは一度だけ使用され、すぐに削除されるため、以下の攻撃が機能するとは確信していません。

4

4 に答える 4

3

誰かが行う必要があるのは、URL をハッシュでインターセプトすることだけであり、彼らはあなたのシステムにアクセスできます。HTTP POST を使用して SSL 経由でハッシュを渡す必要があります。

于 2008-10-23T05:22:05.660 に答える
2

この種のスキームを完全に完璧にすることはできませんが、改善できることがいくつかあります。

  • キーを生成するときに、UNIX タイムスタンプの代わりにランダム シードを使用する
  • 2 ページ目のリクエストのリファラーが 1 ページ目であることを確認する
  • 2 つの要求の送信元が同じであることを確認する

問題への最も安全なアプローチのために、この状況に暗号技術の知識証明スキームを適用することができます。今朝の会議の後、私の脳は少しどろどろになりすぎて、それらの適用可能性について知的なことを言うことができません:)

于 2008-10-23T10:04:01.503 に答える
0

攻撃者は、ユーザーがログインしようとしていることを知っている場合、ハッシュ(またはタイムスタンプがわずかに異なる一連のハッシュ)を生成し、ユーザーがログインする前にログインできます。少し良い解決策は、ハッシュをランダムに生成されたトークンに置き換えることです。次に、攻撃者はサイトexample2へのユーザーのログイン要求を傍受する必要があります。

サイトexample2でHTTPSの代わりにHTTPを使用している限り、安全なスキームはありません。たとえば、安全なサイトexample2の完璧なログインスキームを見つけたとします。ただし、ログイン後、ユーザーからのリクエストは、URLまたはリクエストヘッダー(Cookieなど)のいずれかでセッション情報を送信します。これらの要求は傍受される可能性があり、攻撃者はセッション情報を盗む可能性があります。攻撃者にとって最悪の場合、セッションをソースIPにリンクすることになり、攻撃者はソースIPを偽造する必要があります。

于 2008-10-23T09:23:40.523 に答える
0

ハッシュで使用するIDとユーザーがサイトへのログインに使用するIDは異なりますか?これは、ハッシュを生成してシステムを攻撃する場合の重要な部分です。考慮すべきもう1つのことは、使用しているIDは、数字や単語など、簡単に推測できるということです。

攻撃者が簡単に推測できないものを含むソリューションを考え出す必要があります。基本的に、攻撃者が推測することはほとんど不可能な秘密をハッシュに入れたいと考えています。そのため、ハッシュでソルト(ランダムビット)を使用するのが最善の方法です。

MD5およびSHA-1ハッシュに対する攻撃をご存知だと思いますか?MD5では、実際にはハッシュ衝突の可能性があります(http://merlot.usc.edu/csac-s06/papers/Wang05a.pdf)。SHA-1はまだ安全であると思われますが、両方に対するレインボーテーブル攻撃もあります。ハッシュ。

ソルト、ユーザーID、タイムスタンプを使用してハッシュを生成することは、ソリューションにとって実行可能に聞こえます。また、使用後にハッシュを削除することをお勧めします。

于 2008-10-24T14:12:35.013 に答える