我正在使用Laravel框架加密MySQL数据库中的几乎所有数据。出于隐私考虑,这是一项要求。
Laravel使用特定于应用程序的APP_KEY作为主要密钥来处理加密和解密(OpenSSL / AES-256-CBC密码)。
我想知道:在用户基础上生成APP_KEY很容易(或者有包)吗?所以每个用户都会得到一个APP_KEY (f.e。( USER_APP_KEY)处理所有特定于用户的数据?
我认为这增加了一个额外的安全层。因此,即使数据被窃取并以某种方式解密了一个用户,其余的数据对攻击者来说仍然是无用的。
还是我把事情搞得太复杂了,一个APP_KEY就够安全了吗?
已试过:
为Laravel框架搜索现有的软件包。一般谷歌搜索的例子。
发布于 2019-10-14 08:49:14
是的,您可以为每个用户生成密钥并将其存储到users表中。下面的代码示例是生成一个键。
'key' => encrypt($this->generateRandomString(16))
private function generateRandomString($n) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randomString = '';
for ($i = 0; $i < $n; $i++) {
$index = rand(0, strlen($characters) - 1);
$randomString .= $characters[$index];
}
return $randomString;
} 当您需要解密内容时,可以如下所示。
$encrypter = new \Illuminate\Encryption\Encrypter($key);
$decrypted = $encrypter->decrypt($encryptedContent);为了获得额外的安全性,我建议您使用APP_KEY加密基于用户的密钥。然后将加密密钥存储在数据库中。
解密时,您需要先解密密钥。可以使用基于用户的密钥对内容进行解密之后。然后,有些人需要获取内容,需要同时知道两个键,即用户键和应用键。
希望这能有所帮助。
发布于 2019-09-10 09:10:54
决定使用单一的APP_KEY。我不知道有什么包能处理这件事。基于这些评论,它在安全性方面没有任何好处。
https://stackoverflow.com/questions/57727086
复制相似问题