相关疑难解决方法(0)

我应该如何道德地接近用户密码存储以便以后的明文检索?

随着我继续构建越来越多的网站和Web应用程序,我经常被要求以一种方式存储用户的密码,如果/当用户遇到问题时可以检索它们(要么通过电子邮件发送忘记的密码链接,请通过当我能够对抗这种做法时,我会做很多"额外"编程,以便在不存储实际密码的情况下进行密码重置和管理协助.

当我无法抗争(或无法获胜)时,我总是以某种方式对密码进行编码,以至于它至少不会以明文形式存储在数据库中 - 尽管我知道如果我的数据库被黑客攻击破坏密码的罪魁祸首并不需要太多,所以这让我感到不舒服.

在一个完美的世界里,人们经常更新密码,而不是在许多不同的网站上复制密码 - 不幸的是,我知道许多人拥有相同的工作/家庭/电子邮件/银行密码,甚至在需要帮助时自由地给我.如果我的数据库安全程序由于某种原因失败,我不想成为他们的财务终结负责人.

在道德和道德上,我觉得有责任保护一些用户的生活,即使他们以较少的尊重对待他们.我确信有许多途径可以用来腌制哈希和不同的编码选项,但是当你必须存储它们时,是否有一个"最佳实践"?在几乎所有情况下,我都使用PHP和MySQL,如果这对我应该处理细节的方式有任何不同.

附加信息Bounty

我想澄清一点,我知道这不是你想要做的事情,在大多数情况下拒绝这样做是最好的.但是,我并不是在寻找关于采取这种方法的优点的演讲我正在寻找采取这种方法时采取的最佳步骤.

在下面的一个注释中,我指出,当人们被要求执行安全的密码恢复程序时,主要针对老年人,智障人士或非常年轻人的网站可能会让人感到困惑.虽然在这些情况下我们可能会发现它简单而平凡,但有些用户需要额外的帮助,要么让服务技术人员帮助他们进入系统,要么将其直接通过电子邮件发送/显示给他们.

在这样的系统中,如果用户没有获得这种级别的访问协助,那么来自这些人口统计数据的流失率可能会阻碍应用程序,因此请记住这样的设置.

谢谢大家

这是一个有趣的问题,有很多争论,我很喜欢它.最后,我选择了一个保留密码安全性的答案(我不必保留纯文本或可恢复的密码),但也使我指定的用户群可以登录到系统而没有我从中找到的主要缺点正常的密码恢复.

由于不同的原因,我一直有大约5个答案,但我必须选择最好的答案 - 所有其他答案都是+1.感谢大家!

此外,感谢Stack社区中的每个人都投票赞成这个问题和/或将其标记为最喜欢的.我以100票赞成票作为赞美,并希望这次讨论能够帮助其他与我有同样关切的人.

security password-storage password-encryption

1346
推荐指数
18
解决办法
7万
查看次数

为PHP密码保护哈希和盐

目前据说MD5部分不安全.考虑到这一点,我想知道用于密码保护的机制.

这个问题,"双重哈希"密码是否比仅仅哈希一次更安全? 建议多次散列可能是一个好主意,而如何实现单个文件的密码保护?建议使用盐.

我正在使用PHP.我想要一个安全快速的密码加密系统.散列密码一百万次可能更安全,但也更慢.如何在速度和安全性之间取得良好的平衡?另外,我更喜欢结果具有恒定数量的字符.

  1. 散列机制必须在PHP中可用
  2. 它必须是安全的
  3. 它可以使用盐(在这种情况下,所有的盐都同样好吗?有没有办法产生好的盐?)

另外,我应该在数据库中存储两个字段(例如,一个使用MD5,另一个使用SHA)?它会使它更安全或更不安全吗?

如果我不够清楚,我想知道使用哪种散列函数以及如何选择好的盐以便拥有安全和快速的密码保护机制.

相关问题并不完全涵盖我的问题:

PHP中的SHA和MD5有什么区别
简单密码加密
存储密钥的安全方法,asp.net的密码
如何在Tomcat 5.5中实现salted密码

php security passwords hash protection

1142
推荐指数
13
解决办法
21万
查看次数

双向加密:我需要存储可以检索的密码

我正在创建一个存储密码的应用程序,用户可以检索和查看密码.密码用于硬件设备,因此检查哈希是不可能的.

我需要知道的是:

  1. 如何在PHP中加密和解密密码?

  2. 使用加密密码最安全的算法是什么?

  3. 我在哪里存储私钥?

  4. 除了存储私钥,最好是要求用户在需要密码解密时输入私钥吗?(可以信任此应用程序的用户)

  5. 密码以什么方式被窃取和解密?我需要注意什么?

php security encryption passwords

172
推荐指数
5
解决办法
6万
查看次数

什么是md5()?

我正在阅读本教程中的一个简单的PHP登录系统.

最后,它建议您使用md5()加密密码.

虽然我知道这是一个初学者的教程,你不应该把银行对帐单放在这个登录系统后面,这让我想到加密.

所以我继续前进(本网站为新手提供的最有用的问题之一):开发人员在构建公共网站之前应该知道什么?

它说(在安全下)你应该:

加密哈希和盐密码而不是将它们存储为纯文本.

它没有更多关于它,没有参考.

所以我继续自己尝试:

$pass = "Trufa";
$enc = md5($pass);

echo $enc; #will echo 06cb51ce0a9893ec1d2dce07ba5ba710
Run Code Online (Sandbox Code Playgroud)

这就是让我思考的问题,虽然我知道md5()可能不是加密的最强方法,但任何总能产生相同结果的东西都可以进行逆向工程.

那么使用md5()或任何其他方法加密某些东西的感觉是什么?

如果黑客获得用md5()加密的密码,他就会使用这个页面!.

那么现在的实际问题是:

  1. 密码加密如何工作?

我知道我没有在这里发现一个巨大的网络漏洞!:)我只是想了解密码加密背后的逻辑.

我确定我理解错了,如果你能帮助我设置我的和其他人(我希望),我会很感激.

您将如何应用密码加密以使其实际有用?

  1. 这个想法怎么样?

正如我所说的那样,我可能/错误地认为整个想法是错误的,但是,这种方法是否会在真实环境中增加安全性?

$reenc = array(
 "h38an",
 "n28nu",
 "fw08d"
 );

$pass = "Trufa";

$enc = chunk_split(md5($pass),5,$reenc[mt_rand(0,count($reenc)-1)]);

echo $enc;
Run Code Online (Sandbox Code Playgroud)

如你所见,我随机地将任意字符串($reenc = array())添加到我的md5()密码"使其独一无二".这当然只是一个愚蠢的例子.

我可能错了,但除非你"亲自加密",否则它将永远是可逆的.

以上将是我的"密码保护"和加密密码的想法,如果黑客到达它,他将无法解密它,除非他可以访问原始.php

我知道这甚至没有意义,但我无法弄清楚为什么这是个坏主意!


我希望我已经足够清楚了,但这是一个很长的问题所以请求任何澄清!

提前致谢!!

php security passwords

50
推荐指数
4
解决办法
4600
查看次数