Php 使密码安全
我目前正在寻找加密和存储用户密码的最佳实践。 此时,我正在JSON配置中存储一个由16个字符组成的“密钥”,我总是将该密钥和密码连接起来,以生成一个“安全”密码 如何更好地处理这种情况?每个密码有一个密钥足够安全吗?还是我应该放弃这种方法,转而使用好的ol数据库密码+盐存储Php 使密码安全,php,security,Php,Security,我目前正在寻找加密和存储用户密码的最佳实践。 此时,我正在JSON配置中存储一个由16个字符组成的“密钥”,我总是将该密钥和密码连接起来,以生成一个“安全”密码 如何更好地处理这种情况?每个密码有一个密钥足够安全吗?还是我应该放弃这种方法,转而使用好的ol数据库密码+盐存储 class PasswordHandler { private $_secret_key; private $_password; public function __construct($pas
class PasswordHandler
{
private $_secret_key;
private $_password;
public function __construct($password = 'myVeryStrongPasswordThanNoneCouldBreak') {
$this->_secret_key = 'i36P8JKnyuvaNDah';
$this->_password = $password;
return $this;
}
public function processPassword() {
return hash('sha256', $this->_secret_key . $this->_password);
}
}
echo (new PasswordHandler)->processPassword();
此外:
$this->_secret_key = 'i36P8JKnyuvaNDah';
你的钥匙不再是秘密了
SHA-256足够结实吗
今天可以,但明天不行。通用散列的设计目的是快速,这就是为什么它们不是密码的好选择。您希望使用一个设计为需要大量计算工作的系统
处理密码时,哪种哈希/加密算法是最佳选择
在PHP中,唯一应该用来散列密码的东西是及其伙伴函数。如果您使用的是5.5之前的PHP版本,则可以使用
另请注意:
$this->_secret_key = 'i36P8JKnyuvaNDah';
您的密钥不再是秘密。我将使用PHP函数password\u hash和bcrypt(crypt-blowfish):
此外,您还可以阅读为什么我会将PHP函数password\u hash与bcrypt(crypt-blowfish)一起使用:
您还可以阅读为什么查看
password\u hash()
函数。它为每个密码生成一个动态salt。我认为这样更好,因为如果有人找到了密钥,他就能够解密所有密码
此功能与
password\u verify($pass\u entered,$pass\u storage)
查看password\u hash()函数一起使用。它为每个密码生成一个动态salt。我认为这样更好,因为如果有人找到了密钥,他就能够解密所有密码
此功能用于密码验证($pass\u entered,$pass\u storage)
您是否已从中检查密码哈希/密码验证
,请不要滚动您自己的密码哈希方案。PHP提供并请使用它们。这里有一些。如果您使用的是5.5之前的PHP版本,那么第一条安全规则就是不要编写自己的!Bcrypt可能是存储密码的最佳解决方案。请看这里您是否已从中检查了password\u hash/password\u verify
,请不要使用您自己的密码哈希方案。PHP提供并请使用它们。这里有一些。如果您使用的是5.5之前的PHP版本,那么第一条安全规则就是不要编写自己的!Bcrypt可能是存储密码的最佳解决方案。看看这里这个^7.x兼容吗?这个^7.x兼容吗?这篇文章真的很有帮助!谢谢这篇文章真的很有帮助!谢谢