繁体   English   中英

安全的密码存储

[英]Secure password storage

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

我知道phpBB之类的服务在存储的密码上使用某种隐藏/加密方法。

您需要使用适当的安全算法对密码进行加盐和哈希处理。

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

由于安全性往往要比大多数程序员独自解决的情况复杂得多,并且具有更多看不见的破坏可能性,因此使用标准库几乎总是最简单,最安全的(如果不是唯一的)可用选项。

查看此答案以获取更多信息

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

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

好吧,您不应该使用MD5对其进行加密(这并不是很安全,大多数黑客都有转换表)。

因此,您可以使用SHA1(通常使用)对其进行哈希处理。

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

salt+sha1(salt+pass)

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

在SHA-1(sha1 php内置函数)中散列密码,并重复几次盐析(与以上答案中的相同代码,仅循环几次)。 这应该是足够的保护,所以即使入侵者以某种方式掌握了哈希,他们也不应该能够破解它们……

可以对密码进行哈希处理(最好加一个盐):

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM