2012-01-23 56 views
2

我想執行的邀請系統爲ASP.NET應用程序。系統管理可以添加保存在與安全密鑰關聯的數據庫中的電子郵件地址。該安全密鑰通過鏈接發送到電子郵件。當用戶點擊鏈接時,它可以註冊一個新的帳戶,一切都在繼續。邀請使用安全密鑰

我是一個新手的安全,所以我想知道是否有簡單和安全(不會是美國航空航天局的存檔,很明顯)的方式來實現這樣的機制。

謝謝!

回答

2

我能想到的方法有兩種:

  • 在數據庫中創建一行,並把該行的ID和邀請函中的ID的HMAC。例如?Register.aspx?UserId=3&hmac=54oreijwgoro564i3j2o543。由於客戶端無法爲其他ID重新生成HMAC,因此他不能簡單地更改URL以註冊其他用戶。
  • 創建一些隨機的,唯一的字符串一行。因爲字符串是隨機的,所以很難猜測。當用戶請求?Register.aspx?Code=grewgkrwgoerwgrew432時,在數據庫中搜索具有該代碼的行。在一些項目中,我們使用guid作爲隨機令牌,但我不知道這是多麼安全/隨機。
+0

您錯過了一個重要觀點:將代碼標記爲在使用後已被使用。 – Gumbo

+0

我更喜歡第一個想法!說到安全性,我的方法是一個好主意嗎? – Alessandro

+0

使用HMAC是安全的,只要您使用一個保密的長密鑰即可。您生成HMAC以創建邀請鏈接,並在Register.aspx頁面中檢查給定的HMAC是否與ID匹配。 – Sjoerd