Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 在电子邮件中提供更改密码链接的最简单方法是什么?_Asp.net_Encryption_Passwords - Fatal编程技术网

Asp.net 在电子邮件中提供更改密码链接的最简单方法是什么?

Asp.net 在电子邮件中提供更改密码链接的最简单方法是什么?,asp.net,encryption,passwords,Asp.net,Encryption,Passwords,显然,我不能提供一个链接的电子邮件 example.net/changepassword.aspx?email=bob@example.com 所以我需要 example.com/changepassword.aspx?email=fregrtgethytrhergerg 我该怎么做?我想我需要一个加密密钥?我可以在不创建额外数据库表的情况下完成所有这些操作吗?我对安全一无所知 我找到的与我想要的内容相关的最贴切的解释可能是一篇关于的文章。我在这里假设您想要制作一个“恢复丢失的密码页面”,该

显然,我不能提供一个链接的电子邮件

example.net/changepassword.aspx?email=bob@example.com
所以我需要

example.com/changepassword.aspx?email=fregrtgethytrhergerg
我该怎么做?我想我需要一个加密密钥?我可以在不创建额外数据库表的情况下完成所有这些操作吗?我对安全一无所知


我找到的与我想要的内容相关的最贴切的解释可能是一篇关于的文章。

我在这里假设您想要制作一个“恢复丢失的密码页面”,该页面会向您的用户发送电子邮件。这是真的吗

您不想创建新表,但在现有表中创建一列(或两列)可以吗

如果是这样,您可以在现有表中添加一个“guid”列和另一个“guidExpirationDate”列

当用户请求新密码时,请在表中创建Guid(代码:
Guid.NewGuid()
),并使用
DateTime.Now.AddMinutes(30)
)设置过期日期

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


这里不需要加密。

我在这里假设您希望创建一个“恢复丢失的密码页面”,该页面将向您的用户发送电子邮件。这是真的吗

您不想创建新表,但在现有表中创建一列(或两列)可以吗

如果是这样,您可以在现有表中添加一个“guid”列和另一个“guidExpirationDate”列

当用户请求新密码时,请在表中创建Guid(代码:
Guid.NewGuid()
),并使用
DateTime.Now.AddMinutes(30)
)设置过期日期

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

此处无需加密。

您可以向表中添加一列(验证代码),该列将包含一个unquie值(您可以使用GUID)

当用户请求更改密码时,在数据库中生成并更新验证代码,并在URL中使用相同的代码:

example.com/changepassword.aspx?verificationCode=yourUniqueKey
您可以向表中添加一列(VerificationCode),该列将包含一个unquie值(您可以使用GUID)

当用户请求更改密码时,在数据库中生成并更新验证代码,并在URL中使用相同的代码:

example.com/changepassword.aspx?verificationCode=yourUniqueKey


链接示例显示了如何散列(而不是加密)数据(例如密码)。@gabrjan:decode md5?这是个玩笑吗?啊哈。。我想我对什么是散列还是加密感到困惑。。我需要研究一下这个。。。我在想,这就像能够在原始文本和一些乱码文本之间来回切换一样简单。那个链接呢?这似乎就是我所想的?链接示例展示了如何散列(而不是加密)数据(例如密码)。@gabrjan:decode md5?这是个玩笑吗?啊哈。。我想我对什么是散列还是加密感到困惑。。我需要研究一下这个。。。我在想,这就像能够在原始文本和一些乱码文本之间来回切换一样简单。那个链接呢?这似乎就是我所想的?然后,出于安全原因,使其过期。重置代码只能使用一次。数据来自外部API。。所以我不想创建一个表。。。但我的高级理解是,如果我在代码隐藏页上存储加密密钥。。我不能用它来加密和解密吗?这样,我就不需要新表了。@punkouter:加密的问题是不会有过期延迟:如果生成一个带有加密邮件的链接,这个链接将始终可用。不太安全。。。。除非您在加密密钥中添加日期!这可能是解决办法。你会发现一些关于加密的问题。请参见此示例:,然后出于安全原因使其过期。重置代码只能使用一次。数据来自外部API。。所以我不想创建一个表。。。但我的高级理解是,如果我在代码隐藏页上存储加密密钥。。我不能用它来加密和解密吗?这样,我就不需要新表了。@punkouter:加密的问题是不会有过期延迟:如果生成一个带有加密邮件的链接,这个链接将始终可用。不太安全。。。。除非您在加密密钥中添加日期!这可能是解决办法。你会发现一些关于加密的问题。请参见此示例:。是。。这是非加密方式,我理解。。创建一个guid。。把它寄过来。。当用户单击图标时。。将该guid与表中的用户电子邮件相匹配。。我也能做到。。我认为加密和解密会更容易。。也许不会是的。。这是非加密方式,我理解。。创建一个guid。。把它寄过来。。当用户单击图标时。。将该guid与表中的用户电子邮件相匹配。。我也能做到。。我认为加密和解密会更容易。。也许不是