首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >能否用APP_KEY加密每个用户不同的Laravel中的数据?

能否用APP_KEY加密每个用户不同的Laravel中的数据?
EN

Stack Overflow用户
提问于 2019-08-30 12:49:47
回答 2查看 1.6K关注 0票数 3

我正在使用Laravel框架加密MySQL数据库中的几乎所有数据。出于隐私考虑,这是一项要求。

Laravel使用特定于应用程序的APP_KEY作为主要密钥来处理加密和解密(OpenSSL / AES-256-CBC密码)。

我想知道:在用户基础上生成APP_KEY很容易(或者有包)吗?所以每个用户都会得到一个APP_KEY (f.e。( USER_APP_KEY)处理所有特定于用户的数据?

我认为这增加了一个额外的安全层。因此,即使数据被窃取并以某种方式解密了一个用户,其余的数据对攻击者来说仍然是无用的。

还是我把事情搞得太复杂了,一个APP_KEY就够安全了吗?

已试过:

为Laravel框架搜索现有的软件包。一般谷歌搜索的例子。

EN

回答 2

Stack Overflow用户

发布于 2019-10-14 08:49:14

是的,您可以为每个用户生成密钥并将其存储到users表中。下面的代码示例是生成一个键。

代码语言:javascript
复制
'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; 

} 

当您需要解密内容时,可以如下所示。

代码语言:javascript
复制
$encrypter = new \Illuminate\Encryption\Encrypter($key);
$decrypted = $encrypter->decrypt($encryptedContent);

为了获得额外的安全性,我建议您使用APP_KEY加密基于用户的密钥。然后将加密密钥存储在数据库中。

解密时,您需要先解密密钥。可以使用基于用户的密钥对内容进行解密之后。然后,有些人需要获取内容,需要同时知道两个键,即用户键和应用键。

希望这能有所帮助。

票数 2
EN

Stack Overflow用户

发布于 2019-09-10 09:10:54

决定使用单一的APP_KEY。我不知道有什么包能处理这件事。基于这些评论,它在安全性方面没有任何好处。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57727086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档