2012-10-05 17 views
0

很显然,我不能提供一个电子邮件与链接在电子邮件中提供更改密码链接的最简单方法是什么?

example.net/[email protected] 

所以我需要

example.com/changepassword.aspx?email=fregrtgethytrhergerg 

我怎样才能做到这一点?我认为我需要一个加密密钥?我可以在不创建额外的数据库表的情况下做到这一切吗?我对安全性一无所知。

我发现最接近的解释可能与我想要的是关于How to Hash and Salt Passwords in ASP.NET的文章有关。

+0

链接样品展示你如何_hash_(未加密)数据(例如密码)。 – EdSF

+0

@gabrjan:解码md5?你在开玩笑吗 ? – JYL

+0

啊哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈〜 。 – punkouter

回答

3

我在这里假设你想做一个“恢复丢失的密码页面”,它向你的用户发送一封电子邮件。这是真的?

你不想创建一个新表,但你会没事的在你现有的表中创建一个新的列(或两个)?

如果是这样,您可以在现有表格中添加“guid”列和其他列“guidExpirationDate”。

例如,当用户要求输入新密码时,请在表格中创建一个Guid(代码:Guid.NewGuid()),并设置到期日期为DateTime.Now.AddMinutes(30)

在您的链接中,请提供Guid而不是电子邮件地址。加载页面时,出于安全原因验证Guid没有过期。

这里不需要加密。

+1

然后为了安全起见而过期。重置代码只能使用一次。 –

+0

数据来自外部的API ..所以我宁愿不必创建一个表...但我的高层次的理解是,如果我存储隐藏在页面后面的代码ecrypting键..不能使用它来加密并解密?这样,我不需要一个新表.. – punkouter

+0

@punkouter:加密问题是,你将不会有到期延迟:如果您生成与加密邮件的链接,此链接将始终可用。不太安全。 – JYL

1

您可以将一列(验证码)添加到您的表中,其中将包含一个unquie值(您可以使用一个GUID)。

当用户请求更改的密码,生成&更新VerificationCode数据库&使用相同的URL:

example.com/changepassword.aspx?verificationCode=yourUniqueKey 
+0

是的..这是非加密的方式来做到这一点我明白..创建一个GUID ..发送它..当用户点击第elink ..匹配GUID到用户电子邮件在表..我可以做到这一点以及..我认为只是加密和解密会更容易..也许不是 – punkouter

相关问题