2010-03-04 104 views
0

我有工作到一個點,我認爲它是可用的,我很滿意它。就這樣說,我注意到了一些事情。大多數(如果不是全部的話)會根據電子郵件地址或用戶名以及自動生成的散列碼進行驗證,該散列碼的字符長度爲X。我向用戶發送的URL如下所示。帳戶電子郵件驗證 - 要檢查的內容?

http://www.example.com/account/confirm/bob/cbv54c09023DpW

但是,你不會想以驗證帳戶,除非用戶登錄成功。因此,如果點擊該網址並且我沒有登錄,它將強制我在驗證之前登錄。我的問題是,如果是這種情況,我寧願使用「登錄」用戶名(或電子郵件)和發送的確認碼驗證帳戶。

我問,因爲我發現像Twitter和Facebook這樣的網站會發送這樣的通知,但如果您嘗試修改URL(即example.com/account/confirm/sue/cbv54c09023DpW),它會登錄您,但會告訴您「無法驗證Sue的帳戶像鮑勃一樣「或類似的東西。你們是如何完成這個的?將用戶名/電子郵件傳遞到URL字符串是否有意義?

回答

0

爲什麼不呢?它正在尋找兩種數據的組合來確認;所以安全漏洞的可能性就越小。您可以檢查它們是否已登錄,並檢查用戶名和授權碼是否與數據庫數據匹配。

+0

對,我檢查兩個用戶名和哈希碼。也許我應該澄清,但我的問題是,爲什麼在URL中傳遞用戶名?您可以將其更改爲「/ sue/HASHCODE」並嘗試登錄,如果您檢查URL中傳遞的內容,則會失敗。我想,如果用戶針對你登錄的哈希碼和用戶名進行檢查,那麼URL中的用戶名有什麼意義。 – luckytaxi 2010-03-04 18:43:37

+0

我想這沒關係。也許在Twitter上,他們只是這樣做,所以用戶不會讓用戶混淆。 – casraf 2010-03-04 19:05:24