目前我寫了一封電子郵件驗證碼,發送一個鏈接,其中包含用戶的GUID作爲驗證碼。我不認爲這是安全的,所以我想聽聽你的建議,創建驗證碼的最好和最簡單的方法是什麼?創建電子郵件驗證鏈接的最佳做法?
我認爲最簡單最容易的方法是創建某種散列並將其放入數據庫中,當用戶單擊鏈接時,它會將鏈接值與我的數據庫中的散列進行比較。但爲什麼我需要我的數據庫中只有一次使用一列?這是浪費空間。
目前我寫了一封電子郵件驗證碼,發送一個鏈接,其中包含用戶的GUID作爲驗證碼。我不認爲這是安全的,所以我想聽聽你的建議,創建驗證碼的最好和最簡單的方法是什麼?創建電子郵件驗證鏈接的最佳做法?
我認爲最簡單最容易的方法是創建某種散列並將其放入數據庫中,當用戶單擊鏈接時,它會將鏈接值與我的數據庫中的散列進行比較。但爲什麼我需要我的數據庫中只有一次使用一列?這是浪費空間。
我會說你可以對用戶的GUID(可能用一個SALT)做簡單的symmetric encryption,然後簡單地解密用戶的GUID作爲驗證。
通常情況下,您會創建一個隨機值(Guid適用於此),它是一個重置密碼代碼。該代碼應該過期,應該只能使用一次。您不希望有人閱讀某個包含密碼重置並且能夠重置代碼的舊郵件(因爲使用UserID Guid的代碼總是相同的)。
看看The definitive guide to forms based website authentication在SO上,它有很多有用的信息。
哦,那個鏈接太棒了!現在看看它,很多有用的信息。謝謝! – ojek
您爲什麼認爲用戶的GUID不是安全的方法?它應該接近真正的隨機和不可猜測的... –
說實話,我不知道爲什麼GUID在驗證鏈接是一個不好的做法,但我覺得在我內心,我不應該這樣使用它。 ;-) – ojek
@Jon - 我不同意。以明文形式擁有用戶的GUID將是一種公平的安全風險,絕對不是最佳做法。打開用戶模擬等的可能性。 – CAbbott