2012-02-16 88 views
0

許多註冊的網站要求電子郵件確認,網站在其網址中使用了令牌。爲什麼需要令牌方案?

他們爲什麼要用它?

例如在電子郵件確認的情況下:爲什麼不使用註冊用戶ID而不是令牌?如果在網頁中使用它,我根本就沒有得到!

解釋與真正的應用程序,將不勝感激!

在此先感謝!

回答

1

在此上下文中的令牌通常是用於驗證的一次性時間限制隨機字符串。可以容易地生成(例如)40個字符的標記[例如sha1(microtime() . rand(1, 10000)))],這是用戶不可猜測的,並且不是可蠻暴的(在合理的範圍內)。

對於電子郵件驗證,將生成令牌並將其與您的帳戶ID鏈接。當您訪問包含令牌的地址時,該帳戶將被激活。由於我們已經確定令牌不會被強制或猜測(在合理範圍內),我們只是確定某個用戶確實擁有他們給我們的電子郵件地址。

如果我們只是使用他們的會員號碼,他們可以做幾件事情來猜測它,從而完全繞過電子郵件檢查。


當登錄或提交某種形式,術語「令牌」可以在一個稍微不同的上下文中使用 - 它仍然是一個一次性的有時間限制的隨機字符串,但它的使用確保了提交表格的人剛剛從他們試圖提交的表單中提取。

例如,假設您登錄到您的網上銀行。他們可能有一個表格將資金轉帳到另一個銀行賬戶。如果您訪問www.nastysite.com,它們可能會包含一個指向<iframe src="http://www.mybank.com/send_money.php?amount=9001&to=Joe">的iframe。如果你的銀行沒有確認你確實在表格上,那麼付款將會通過,而且你不會很開心。即使你在表單上,​​表單上加載的表單上正確標記的機會幾乎爲零。

這被稱爲「跨站點請求僞造」或CSRF。有關CSRF的更多閱讀,請看this Wikipedia article。另外,在寫這篇文章後,我剛剛得到了這個鏈接,並看到他們使用了一個非常類似於我的例子 - 真正的巧合哈哈。

+0

他們怎麼能繞過,如果我總是檢查用戶是否被激活或執行任何操作之前。然後在使用id或令牌之後將沒有區別。 – J3DI 2012-02-16 17:47:23

+0

確保某人擁有他們聲稱的電子郵件地址的典型方法是發送一封電子郵件到該地址並附上一個鏈接供他們點擊 - 這很容易成爲目前最常用的方法,因爲這對用戶和用戶來說都很容易程序員。通過使用隨機令牌,它(幾乎)保證用戶確實擁有該地址。它不是一個登錄系統的替代品 - 你仍然需要這個,你會使用會員ID。令牌用於帳戶註冊。如果我仍然錯過了這個問題,你可以重複一下嗎? :) – Joe 2012-02-16 17:50:13

+0

那麼在開發網站使用令牌(很少使用形式的網頁)呢?我在一些站點看到它,在我訪問他們的頁面時,在他們的GET請求中有一個令牌參數,並且它一直在改變。爲什麼這樣做? – J3DI 2012-02-16 17:54:04

相關問題