質問

クエリストリングでサイト1からサイト2に渡すことができるログイントークンを作成する必要があります。ユーザー名やIDを転送する必要はありません。サイト2で、ユーザーがサイト1に有効なログインを持っていることを知る必要があります。

私は現在、このようなトークンを作成しています

timestamp|sha256(timestamp+secret)

サイト2で、指定されたタイムスタンプ+シークレットのSHA256を作成し、与えられたハッシュと一致させます。また、タイムスタンプをチェックしますが、5分以内にあるかどうかは検証されません。

これはかなり安全な方法ですか?

Sha256を割って秘密を手に入れるのは簡単ですか?

役に立ちましたか?

解決

使用できます hmac すでに共有されたシークレットキーを持っている2つの関係者間で認証されたメッセージを提供する。あなたが説明したことは、そのタイプのメッセージ認証コードであるため、HMACに非常に似ています。私は実際にこれを行うためにHMAC関数を使用しますが。

HMACをクラックするには、認証コード(メッセージのハッシュされた部分)を使用して、秘密をブルートフォースする必要があります。攻撃者はタイムスタンプを知っているので、秘密を推測し続けることができます。 /dev /ランダムからの出力が良い選択であるように、秘密を本当に大きくて非常にランダムにするだけです。

他のヒント

@Rookが言うように、HMACを使用してトークンを認証する必要があります。

さらに、トークンが盗まれないようにする必要があります。たとえば、そのトークンをClearTextで送信する場合、サイト1からユーザー、またはユーザーからサイト2まで、(Firesheepを考える)人は誰でもアカウントを持っていることを「証明」することもできます。それを防ぐためにできる最善のことは、SSL/TLSを使用することです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top