安全密码存储

时间:2010-12-02 12:11:35

标签: php security encryption passwords password-protection

我正在开发一个用户必须登录的网络服务。我将用户数据存储在SQL数据库中,并通过PHP输入/输出。但我不想公开存放它。如何在PHP中加密密码,只有知道密码的人才能解锁?

我知道像phpBB这样的服务会对存储的密码使用某种隐藏/加密方式。

7 个答案:

答案 0 :(得分:5)

您需要使用适当安全的算法对密码进行加密和散列。

答案 1 :(得分:3)

确保密码存储方案安全的最简单方法是使用标准库

因为安全性往往要复杂得多,并且比大多数程序员单独解决的问题更加隐形,所以使用标准库几乎总是最简单,最安全(如果不是唯一的)可用选项。

有关详细信息,请参阅this answer

答案 2 :(得分:0)

您可能希望哈希密码 - 不加密密码。 Check out SHA-1。散列意味着您无法像加密一样检索原始数据。相反,您所做的是对用户输入进行散列并将其与数据库中的散列进行比较,以查看他们是否拥有正确的密码。这样做可以提高安全性,就像您的数据库遭到破坏一样 - 一堆哈希是无用的。

答案 3 :(得分:0)

保存MD5哈希并使其更安全,添加盐。

答案 4 :(得分:0)

好吧,你不应该用MD5加密它们(这不是真正安全的,大多数黑客都有转换表)。

因此,您可以使用SHA1(通常使用)散列它。

如果您想要更高的安全性,可以添加更多salt这是,您可以像这样添加(仅作为示例,通常使用):

salt+sha1(salt+pass)

这种组合可以用于多种语言。

答案 5 :(得分:0)

使用SHA-1(sha1 php内置函数)中的哈希密码进行多次salting递归(上面的答案中的代码相同,只循环几次)。这应该是足够的保护,所以即使入侵者以某种方式将他们的手放在哈希上,他们也不应该破解它们......

答案 6 :(得分:-1)

有可能散列密码(最好用盐):

$salt = random_string($length = 5);
$hash = $salt . sha1($salt . $password);

或加密存储(仅当您的MySQL连接受SSL保护时):

INSERT INTO `user` (`user`,`pass`) VALUES("username",ENCRYPT("password","secretkey"))