2012-02-16 21 views
0

多くの登録サイトでは、電子メールの確認とサイトのURLにトークンを使用しています。なぜトークンスキームが必要ですか?

なぜ彼らはそれを使用しますか?

たとえば、電子メールの確認の場合:なぜトークンの代わりに登録されたユーザーIDを使用しないのですか?ウェブページで使用した場合、私はまったく得られなかった!!

実際のアプリケーションでの説明がわかります!

ありがとうございます!

答えて

1

このコンテキストのトークンは、通常、検証に使用される使い捨てのタイムリミットなランダムな文字列です。ユーザが推測することはできず、(理由の範囲内で)ブルートフォース可能ではない(例えば、sha1(microtime() . rand(1, 10000)))などの)40文字のトークンを簡単に生成することができます。

電子メールの確認のために、トークンが生成され、アカウントIDとリンクされます。トークンを含むアドレスにアクセスすると、アカウントが有効になります。私たちは、トークンがブルート・プロストまたは推測(理由のもとで)できないことを確立しているので、特定のユーザーが実際に私たちに与えた電子メールアドレスを持っていることを確認しました。

メンバー番号を使用したばかりの場合は、推測するためにいくつかのことを行うことができ、電子メールのチェックはまったく行われません。それはまだ使い捨て期間限定のランダムな文字列だが、ことを確認するために使われています - ログインまたはいくつかの種類のフォームを送信するとき、用語「トークン」とは若干異なる文脈で使用することができる


フォームを提出した人は、提出しようとしたフォームから来たばかりです。

たとえば、オンラインバンキングにログインしたとします。彼らは、別の銀行口座に送金するためのフォームを持っているかもしれません。 www.nastysite.comに行くと、<iframe src="http://www.mybank.com/send_money.php?amount=9001&to=Joe">を指すiframeが含まれている可能性があります。あなたの銀行があなたが実際にフォームに載っていることを確認しなければ、その支払いが行われ、あなたは一番幸せにならないでしょう。あなたがフォーム上にあっても、偽のpage-loadで使用されているフォーム上の正しいトークンの可能性は(ほぼ)ゼロです。

これは、「クロスサイトリクエスト偽造」またはCSRFと呼ばれます。 CSRFについてさらに読むには、this Wikipedia articleをご覧ください。また、私はちょうどこの記事を書いた後にそのリンクを得て、彼らが私の似たような例を使っていることを見ました - 本物の偶然の一致haha。

+0

どのような操作を行う前に、ユーザーがアクティブ化されているかどうかを常に確認すると、どのようにバイパスできますか。その後、IDまたはトークンを使用した後には違いはありません。 – J3DI

+0

誰かが自分のメールアドレスを所有していることを保証する典型的な方法は、クリックするためのリンクを含むメールをそのアドレスに送信することです。これは、ユーザーとプログラマー。ランダムトークンを使用することによって、ユーザーが実際にそのアドレスを所有していることが(ほぼ)保証されます。それはログインシステムの代わりではありません - あなたはそれを必要とし、あなたはそのためにメンバーIDを使用します。トークンはアカウント登録時に使用されます。私がまだ質問を紛失している場合は、少し言い換えることができますか? :) – Joe

+0

開発サイト(フォーム付きのページでめったにない)でトークンを使用するのはどうですか?私は自分のページにアクセスするたびに、GETリクエストにトークンパラメータがあり、それはいつも変更されているサイトで見ることができます。それはなぜですか? – J3DI

関連する問題