PHP MYSQL存储密码以供PHP调用

时间:2014-02-22 00:59:59

标签: php mysql passwords

我完全知道以明文存储登录是不安全的,但我一直无法找到我的具体问题的答案。我想要做的是将服务器密码存储在数据库中,以便使用自动php脚本进行调用,但是我对于数据库被黑客攻击是偏执的,所以我需要确保它们在被黑客入侵的情况下无法检索。和任何项目一样,我正在计划“最坏情况”的情况。密码本身是随机生成的。

3 个答案:

答案 0 :(得分:1)

简答:

你不能。

答案稍长:

您可以使用可逆加密算法。基本上,而非哈希密码(不可逆转),加密

然而,这提供了以纯文本格式存储密码的更多保护。请记住,根据定义,任何可逆机制都可以反转,因此,如果您的数据库被黑客攻击,那么犯罪者可能会撤销您的密码。

答案 1 :(得分:1)

使用PHP的password_hash()函数对您的密码进行哈希和加密,然后将其插入到mysql中。注意:每次使用不同的盐,这使得它更加安全 - 您不必将盐存储在数据库中,因为PHP会自动为您存储。

// hash and salt...
$password = password_hash($your_random_password, PASSWORD_DEFAULT);

现在,在mysql中检查你的随机密码(来自上面的步骤)以查看它是否合法

if(password_verify($your_random_password, $row->passwd)) {
    echo 'password is legit';
} else {
    echo 'not legit';
}

有关使用PHP进行散列的更多信息,请参阅此处。 http://php.net/manual/en/faq.passwords.php

答案 2 :(得分:1)

如果您绝对必须返回密码以使用它们自动登录其他系统 - 最安全的方法(不,这些不会像仅存储盐渍哈希那样安全)将是:


方法1

1:在文档根目录外的服务器上有一个文件,其中包含用于生成加密密钥的可复制方法 - 对密码创建时间进行哈希处理。

2:使用您在脚本中生成的密钥,将密码存储在使用BLOB加密的AES_ENCRYPT字段中。

3:确保您始终使用这些密码与您登录的任何系统建立SSL连接,并且当PHP与数据库进行通信时,可以在同一台机器/机架上进行,也可以使用加密线路进行


方法2(更好但有附带条件)

如果您可以在需要登录的服务器上存储GPG私钥,则可以在将密码输入数据库之前使用相应的公钥加密密码。

然后在需要时将GPG加密密码传递到这些系统 - 然后他们可以解密密码并使用它们。

这意味着您需要控制这些系统,以便能够实施GPG。