Asp.net 设计新用户确认(通过电子邮件验证)

Asp.net 设计新用户确认(通过电子邮件验证),asp.net,security,spam-prevention,Asp.net,Security,Spam Prevention,我正在开发一个ASP.Net应用程序,需要验证用户是否合法,而不是垃圾邮件。一旦新用户输入他们的名字、姓氏、电子邮件地址,我的应用程序将发送一封电子邮件来验证用户的真实性。该电子邮件将包含一个链接,该链接将确认用户帐户 我正在寻找有关电子邮件链接背后的逻辑的帮助。一旦用户点击链接,会发生什么 我有一个网站使用了Captcha,但没有太多的运气阻止垃圾邮件(我知道你不能阻止100%的垃圾邮件)类似于此正如Rook在下面指出的,最简单的方法是使用Captcha 如果您还需要验证电子邮件,请参见下文

我正在开发一个ASP.Net应用程序,需要验证用户是否合法,而不是垃圾邮件。一旦新用户输入他们的名字、姓氏、电子邮件地址,我的应用程序将发送一封电子邮件来验证用户的真实性。该电子邮件将包含一个链接,该链接将确认用户帐户

我正在寻找有关电子邮件链接背后的逻辑的帮助。一旦用户点击链接,会发生什么


我有一个网站使用了Captcha,但没有太多的运气阻止垃圾邮件(我知道你不能阻止100%的垃圾邮件)类似于此

正如Rook在下面指出的,最简单的方法是使用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>

发送确认链接并不能阻止垃圾邮件。向某人发送带有just的链接可以确保他们可以接收电子邮件,而机器人也可以接收电子邮件


阻止垃圾邮件的最好方法是使用capthca,我建议使用。当用户注册您的服务时,您应该向用户提示capthca

我不会在querystring上公开用户表的数据库id。@Claudio Redi会公开用户id的。。。这是web应用程序最常见的工作方式。如果可以避免,我不会以这种方式公开它,在这种情况下还有其他方法(我可以使用GUID来识别挂起的激活请求)。我觉得我给外界的信息太多了。用户名和ID、GUID在网络上到处可见。。你是说没有人是安全的吗?@Marko Ivanovski:对不起,我不是这个意思。特别是在这种情况下,我可以实现同样的效果,而无需在查询字符串上传递用户id。因此,我认为,与您公开的备份相关的信息越少越好:)只是出于好奇,有人破解了reCaptcha吗?我不觉得这个问题如此
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