2010-10-03 59 views
3

我正在開發一個ASP.Net應用程序,它需要驗證用戶是否合法而不是垃圾郵件。一旦新用戶輸入他們的名字,姓氏,電子郵件地址,我的應用程序將發送一封電子郵件來驗證用戶的真實性。該電子郵件會認可一個確認用戶帳戶的鏈接。設計一個新的用戶確認(通過電子郵件驗證)

我在尋找有關電子郵件鏈接背後邏輯的幫助。一旦用戶點擊鏈接,會發生什麼?

我有已使用驗證碼網站,並沒有多少運氣阻止垃圾郵件(我知道你不能阻止100%的垃圾郵件)與此類似Stopping spammers from creating accounts (reCaptcha not doing the trick)

回答

2

正如魯克指出以下,最簡單的方法是使用Captcha。

如果您需要驗證電子郵件以及不過,見下文。


您可以生成批准GUID並將其傳遞到將用戶標記爲活動的電子郵件URL。

例如,一個名爲ApprovalID列添加到用戶表,並生成一個新的GUID當用戶寄存器,即

你應該標記在此階段,用戶爲不活動。

Example Guid 3F2504E0-4F89-11D3-9A0C-0305E82C3301 

然後通過用戶ID和GUID在電子郵件正文

<a href="http://www.mysite.com/verify.aspx?UserId=TheUserId&ApprovalId=3F2504E0-4F89-11D3-9A0C-0305E82C3301">Verify your account</a> 

然後一個簡單的頁面verify.aspx

代碼隱藏

string UserId = Request[UserId].ToString(); // You can parse these as Guids 
string ApprovalId = Request[ApprovalId].ToString(); 

TODO: 
// Get user from database 
// Match QueryString ApprovalId to Column ApprovalId 
// Ask user to Log In 
// Set user as active 
+0

這並不會阻止垃圾郵件。 – rook 2010-10-03 01:17:55

+0

我不會在查詢字符串中暴露用戶表的數據庫ID。 – 2010-10-03 01:18:46

+0

@Claudio Redi SO暴露用戶ID ...這是Web應用程序最常用的方式。 – rook 2010-10-03 01:19:47

0

發送一個確認鏈接不會做任何事情來阻止垃圾郵件。通過電子郵件向某人發送與Cryptographic Nonce的鏈接只是確保他們可以收到電子郵件,機器人也可以收到電子郵件。

最好的辦法阻止垃圾郵件是通過使用capthca,我recocmend使用reCapthca。當用戶註冊您的服務時,您應該提示用戶使用capthca。

+0

出於好奇,有沒有人破解reCaptcha呢? – Marko 2010-10-03 01:25:49

+0

沒關係,我發現這個問題http://stackoverflow.com/questions/448963/has-recaptcha-been-cracked-hacked-ocrd-defeated-broken – Marko 2010-10-03 01:31:28

相關問題