在json文件中存储User-Pass登录


Storing User-Pass logins in json file?

我的任务是创建一个系统,这个问题是我不能在数据库中存储任何东西,因为服务器设置得非常糟糕,基本上任何数据库相关的存储都不可用。

所以我得出的结论是存储任何和所有的数据在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..."
 }, {
   ...
 }]
}