我的任务是创建一个系统,这个问题是我不能在数据库中存储任何东西,因为服务器设置得非常糟糕,基本上任何数据库相关的存储都不可用。
所以我得出的结论是存储任何和所有的数据在json
格式。现在我的问题是我需要存储用户凭据,因为只允许授权用户访问。
如何存储这些用户凭据?我应该将它们存储在 one-way password hashes
中,还是应该使用mcrypt_encrypt()
&mcrypt_decrypt()
分别吗?
function encrypt($string) {
if (extension_loaded('mcrypt')) {
return trim($this->base64_url_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $this->key, $string, MCRYPT_MODE_ECB)));
} else {
return false;
}
}
<<p> 解密函数/strong> function decrypt($string) {
if (extension_loaded('mcrypt')) {
return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $this->key, $this->base64_url_decode($string), MCRYPT_MODE_ECB));
} else {
return false;
}
}
以下两个base64
函数来自 here
:
function base64_url_encode($input) {
return strtr(base64_encode($input), '+/=', '-_,');
}
function base64_url_decode($input) {
return base64_decode(strtr($input, '-_,', '+/='));
}
在处理用户密码时始终使用单向加密。某人进入你的服务器并恢复密码的潜在损害太大了。我建议使用内存密集型的多轮散列算法,如bcrypt/scrypt。
如果你必须使用JSON,存储散列密码,然后当用户登录时,重新散列他们的密码并进行比较。
{
"users": [{
"name": "john",
"password": "sjh77DGGD..."
}, {
...
}]
}