Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.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 mvc 创建电子邮件验证链接的最佳做法?_Asp.net Mvc - Fatal编程技术网

Asp.net mvc 创建电子邮件验证链接的最佳做法?

Asp.net mvc 创建电子邮件验证链接的最佳做法?,asp.net-mvc,Asp.net Mvc,目前,我编写了一个电子邮件验证码,它发送一个链接,该链接将用户的GUID作为其验证码。我不认为这是安全的,所以我想听听你的意见,创建验证代码的最佳和最简单的方法是什么 我认为最简单的方法是创建某种散列并将其放入数据库,当用户单击他的链接时,它会将链接值与我的数据库中的散列值进行比较。但为什么我的数据库中需要一个只使用一次的列呢?这是对空间的浪费。我想说,您可以使用SALT对用户的GUID进行简单处理,然后简单地解密用户的GUID作为验证。我想说,您可以使用SALT对用户的GUID进行简单处理,然

目前,我编写了一个电子邮件验证码,它发送一个链接,该链接将用户的GUID作为其验证码。我不认为这是安全的,所以我想听听你的意见,创建验证代码的最佳和最简单的方法是什么


我认为最简单的方法是创建某种散列并将其放入数据库,当用户单击他的链接时,它会将链接值与我的数据库中的散列值进行比较。但为什么我的数据库中需要一个只使用一次的列呢?这是对空间的浪费。

我想说,您可以使用SALT对用户的GUID进行简单处理,然后简单地解密用户的GUID作为验证。

我想说,您可以使用SALT对用户的GUID进行简单处理,然后简单地解密用户的GUID作为验证。

通常创建一个随机值Guid是一个重置密码代码。代码应该过期,并且只能使用一次。您不希望有人阅读包含密码重置的旧邮件并能够重置代码,因为使用UserID Guid时代码总是相同的


看看这里,它有很多有用的信息。

通常,您可以创建一个随机值Guid,这是一个重置密码代码。代码应该过期,并且只能使用一次。您不希望有人阅读包含密码重置的旧邮件并能够重置代码,因为使用UserID Guid时代码总是相同的


看看这里,它有很多有用的信息。

为什么您认为用户的GUID不是一种安全的方法?它应该接近真正的随机性和不可猜测性…老实说,我不知道为什么验证链接中的GUID是一种不好的做法,但我内心感到,我不应该这样使用它-@乔恩-我不同意。使用纯文本的用户GUID将是一种公平的安全风险,绝对不是最佳做法。打开用户模拟的可能性,等等。你可以用一些静态的东西来填充GUID,然后散列结果。这样,数据库中就没有多余的东西了。为什么您认为用户的GUID不是一种安全的方法?它应该接近真正的随机性和不可猜测性…老实说,我不知道为什么验证链接中的GUID是一种不好的做法,但我内心感到,我不应该这样使用它-@乔恩-我不同意。使用纯文本的用户GUID将是一种公平的安全风险,绝对不是最佳做法。打开用户模拟的可能性,等等。你可以用一些静态的东西来填充GUID,然后散列结果。这样,数据库中就没有多余的东西了。在我创建这个线程之前,我一直在研究这个方法,它关注的是我需要什么。但我并不完全理解加密的事情。问题是,要加密某些东西,您需要密码。我把这个密码放在哪里?我应该硬编码吗?有几个地方可以保存对称密钥:数据库、web.config甚至代码。通常,它可以保存在web.config中。将盐存储在数据库中,web.config中的键是一个非常好的解决方案,因为有人必须同时拥有您的web.config和数据库值才能找到重置代码。是的。在我创建这个线程之前,我一直在研究这个方法,它关注的是我需要什么。但我并不完全理解加密的事情。问题是,要加密某些东西,您需要密码。我把这个密码放在哪里?我应该硬编码吗?有几个地方可以保存对称密钥:数据库、web.config甚至代码。通常,它可以保存在web.config中。将盐存储在数据库中,web.config中的密钥是一个非常好的解决方案,因为有人必须同时拥有您的web.config和数据库值才能找到重置代码。哦,这个链接太棒了!现在浏览一下,有很多有用的信息。谢谢哦,那个链接太棒了!现在浏览一下,有很多有用的信息。谢谢