Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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
如何通过确认电子邮件发送密码(PHP)_Php_Email_Login_Passwords - Fatal编程技术网

如何通过确认电子邮件发送密码(PHP)

如何通过确认电子邮件发送密码(PHP),php,email,login,passwords,Php,Email,Login,Passwords,首先,我意识到这是一种非常糟糕的做法,然而,我看到过这样的网站,我想知道 是否仍然需要发送密码和注册详细信息,并且仍然将密码存储为哈希 因此,基本上,在注册时,用户会收到一封确认电子邮件,以及他们的用户名和密码,以便保存以供参考。当网站这样做时,他们是将密码存储为散列还是明文 密码以明文形式存储在电子邮件中-但是,它只是以明文形式存储在服务器中,还是在发送电子邮件后进行哈希处理 这似乎是一个奇怪的问题,但由于我看到许多网站都在这样做,我想知道——我最初的假设是错误的吗?那么,这种做法实际上是一种

首先,我意识到这是一种非常糟糕的做法,然而,我看到过这样的网站,我想知道

是否仍然需要发送密码和注册详细信息,并且仍然将密码存储为哈希

因此,基本上,在注册时,用户会收到一封确认电子邮件,以及他们的用户名和密码,以便保存以供参考。当网站这样做时,他们是将密码存储为散列还是明文

密码以明文形式存储在电子邮件中-但是,它只是以明文形式存储在服务器中,还是在发送电子邮件后进行哈希处理


这似乎是一个奇怪的问题,但由于我看到许多网站都在这样做,我想知道——我最初的假设是错误的吗?那么,这种做法实际上是一种不好的做法,还是安全的做法?(我看不出有其他理由这么多网站会这么做)

不要。就是这么简单。网站这样做是出于懒惰。他们不希望支持电话询问密码,或者一个技术文盲强迫他们这样做。密码不应以明文形式通过网络发送。人们很愚蠢,会重复使用密码,等等。如果你担心人们已经忘记了他们的密码,请在电子邮件中给他们发送一个指向你的密码重置页面的链接


“@Fred ii-你能复制/粘贴该评论作为答案吗?I–Zack105”

应要求:

但是,它只是以明文形式存储在服务器中,还是在发送电子邮件后进行哈希处理

我们不知道每个服务是如何使用的,以及它们真正的用途。有些可能会将密码存储为纯文本,有些可能会散列。有些可能使用锁和钥匙将纯文本密码存储在不同的位置,有些可能这样做并散列;它可以是任何东西

如果您想启动自己的服务或是用户注册站点的服务,请将密码存储为散列而不是纯文本。你问的问题有太多的情况。我希望我们已经给了你足够的时间让你开始

如果您不知道这一点,另一件事是准备好的语句,如果您希望获得用户输入,应该使用这些语句,这将有助于防止可能的SQL注入

参考资料:


来自(现已删除)答案的评论:

我引述:


“最佳做法是让用户选择自己的密码,并且在任何时候都不要以明文形式存储或发送密码。密码是一个秘密,必须仅存在于用户的头脑(或安全密码管理器)中。”。用户帐户的安全性取决于密码的保密性。明文公开的密码越多,帐户的安全性就越低。”–deceze

一些服务仍然在电子邮件中以明文形式发送密码,并将其存储在db中的散列中。不是很好的做法,但很容易做到。“首先,我意识到这是一个非常糟糕的做法”-你是对的,那么为什么要这么做?1)生成密码。2) 散列,存储在数据库中。3) 通过电子邮件发送明文密码,该密码仍保留在内存中,因为您刚刚生成了它问题是什么?我诚实地认为,这个问题太广泛了,我需要写些什么,不适合在这里发表评论。如果我真的写了一个答案,那么在这样做的过程中,我会被否决。不过,简而言之,我可以用一点伪代码轻松回答这个问题;在存储(安全)散列之前,为密码设置的变量可以包含在电子邮件中,然后作为散列存储在db中<代码>$pass=$_POST['pass'];回音$pass
$pass
然后使用
密码_hash()保存到数据库中
;我在这里能做的最好;-)@Fred ii-你能复制/粘贴该评论作为答案吗?我会接受的——这是迄今为止最好的答案,从这个问题得到的反应来看,我认为这将是最好的答案,我不会真正回答这个问题,但这是唯一明智的答案。我认为你没有真正阅读这个问题。。。。。我不想用这个,我只是想看看它是否有效。显然,它不起作用,但我要求的是技术上的解释,而不是有人告诉我它不起作用。我明确地说我不想那样。@Zack105它确实有效,但永远不应该这样做。你写了“有没有发送密码和注册详细信息,并且仍然将密码存储为散列?”但没有提到你的意图。这被理解为“我如何做到这一点?”如果所有的理由都说“不要”,那么“如何做到”就无关紧要了。我确实提到了我的意图——我特别说过我不想使用它,只想澄清这种做法有多安全。在哪里?我所能看到的只是你最初认识到这是一种不好的做法,然后问这是否是一个错误的假设。