PHP密码还有什么


PHP password whats left?

密码安全使用什么?

作为这方面的新手(以及一般的编码),我一直在看各种各样的关于PHP和密码安全的教程、文章等。当使用mysql-db和php时,这导致了各种不同的解决方案。不幸的是,所有这些不同的文章和/或教程似乎都相互矛盾。有人说md5适合"主流"用户,也有人建议使用sha1或crypt()。现在,就我所见,只有crypt()似乎是一个"可行"的解决方案。使用md5似乎并不安全,因为它有各种不同的在线解密网站。使用sha1,即使加了盐,似乎也没有什么更好的。这里给出了一个简短的演示:

http://www.youtube.com/watch?v=lrGMxH8WNZ8

所有这些都引出了我的问题。对于mysql驱动的论坛网站,什么是最好的解决方案?至少在原则上,它不包含任何"个人信息"(记不清正确的英语术语)。有必要制作一些SSL解决方案吗。。。。。。?

谢谢。

每个人都会吹捧bcrypt,它是可靠的。但我更喜欢新的PHP5 API密码哈希函数,它是PHP5.5中的标准函数。

在这里阅读

这是超级容易,从我所能说的超级安全。

只需在您的数据库和设置的中设置一个60长度的varchar

$hash = password_hash($password, PASSWORD_BCRYPT);

并验证:

if (password_verify($password, $hash)) {
    // password valid!
} else {
    // wrong password :(
}

由于不是所有的托管服务器都提供5.5,你可以在这里获得类

就SSL而言,建议使用SSL。

md5和sha并不是真正使用的-http://www.php.net/manual/en/faq.passwords.php#faq.passwords.fasthash

此外,无论你存储无聊的非敏感信息还是政府机密,你都应该使用最安全的方法。如果所有这些都实施后,您的站点计划发生了变化,并且突然需要存储敏感数据,该怎么办
如果有人通过不安全的方法入侵你的非敏感数据库并删除所有内容,该怎么办?失去所有这些数据并不得不从备份中恢复,这可能只不过是一种痛苦,但对我来说,这本身就足够了
此外,由于有人入侵了你的数据库,如果他们稍后返回并再次入侵,你最终将不得不更新你的登录方法。

除此之外,为什么不从一开始就学习最佳实践,那么你所做的任何网站都是最佳的安全方法呢?为什么要为一个网站学习简单而不那么安全的方法,以便以后为另一个网站使用不同的方法
学习最佳实践,始终,并始终使用它,然后您只需要在所有代码中学习和使用一种方法,因此从实践中可以提高您的效率和知识。

crypt和Blowfish的结合几乎是我现在的选择。它从注册中获取用户密码,并将散列字符串和唯一的salt放在一起,始终保持相同的字符长度,这样您就可以在数据库中轻松管理它
所有的用户salt都是不同的,所以有人获取你所有的数据库数据,并计算出一个密码salt是如何形成的,这几乎是不可能的,只会获得一个密码,而无法获得其他密码。

然后,当用户登录时,只需使用内置函数将他们输入的密码从登录表单检查到数据库中的密码,库就会计算出hash/salt/etc并检查两者。如果匹配,则登录,否则不登录。