從this question我真的很喜歡@ woliveirajr的答案,因爲它解決了:驗證電子郵件安全系統解決
- 如何防範釋放一個網站
- 所使用的電子郵件地址驗證的所有者E-mail地址
爲了避免這種泄漏的,你也可以通過詢問的電子郵件開始註冊 過程。輸入後,您將發送一封帶有鏈接的 電子郵件,以便用戶可以繼續進行 註冊過程。如果電子郵件已經註冊,你會發送一封電子郵件說。
這樣,只有電子郵件的所有者可以登記。
缺點:
- 可能是真實的,普通用戶將獲得由有這麼多的步驟來註冊無聊。
- 在極少數情況下,一個電子郵件在一個網站已經註冊簡單揭示出了問題,特別是因爲它很容易 寄存器在任何網站提供你想要的任何電子郵件。您只需 將不會收到電子郵件來激活您的帳戶,但通常 網站會將帳戶/用戶名與該電子郵件相關聯。
在那裏我不確定是如何實現一個系統,一個用戶只能訪問註冊頁面時,他們從點擊電子郵件中的鏈接。註冊頁面是否會使用GET檢索傳遞給它的數據並驗證「代碼」以瞭解用戶是否可以註冊,並且此代碼每30分鐘更改一次?例如,電子郵件註冊鏈接可能是mysite.com/register.php?secretcode=as18d
和register.php
將檢查「代碼」as18d
,但此代碼將每30分鐘更改一次。這是主意嗎?代碼是否會根據系統時間通過salted hash生成?
或者,而不是電子郵件的幾個字母的鏈接可以通過電子郵件發送,用戶進入註冊頁面進行身份驗證,有點像如何拍攝工作,但不是真的。
這是生成GUID/UUID所需的函數嗎? http://php.net/manual/en/function.uniqid.php或者應該使用'openssl_random_pseudo_bytes()'來代替? – Celeritas
唯一性是重要的,所以或許應該很好,因爲獲取一系列值是不切實際的。 –