PHP纯文本加密 - 保持密钥安全

时间:2013-08-04 13:46:07

标签: php security encryption key

在典型的Web场景中,网站用户将出现,使用网站,填写表单,并将数据传输到服务器以存储在数据库中。现在让我们说我们需要确保他们的地址被加密,因为它是绝密的,只有访问网站后端的人应该能够看到该地址是什么 - 这很容易实现吗?我们只存储一个加密密钥服务器端,用于生成加密数据,将数据存储在数据库中,我们只需再次使用该密钥对其进行解密。

现在假设托管公司的某个人要浏览您服务器上的文件 - 他们可以非常轻松地访问此加密密钥,然后使用它来解密他们想要的任何数据,因为数据库中的所有地址都已加密用同样的钥匙!

我只是试图用新的安全模型覆盖每个基地,并且在“不信任任何人”政策中,我正在寻找阻止托管公司获取数据的方法。

那么有没有人有任何建议来阻止那些有服务器访问权限的人获取密钥和解密数据?密码保存会以任何方式提供帮助,还是他们仍然可以很容易地解密数据。

我无法想办法绕过这个问题。有没有人有任何建议来解决这个特殊问题?

4 个答案:

答案 0 :(得分:0)

在浏览器中加密和解密发送给主机的所有内容。使用在客户端上输入的密码短语进行加密,并且永远不会将密码短语发送到主机。在Host-proof Hosting

有更全面的描述

答案 1 :(得分:0)

我认为在共享主机方面存在风险。我在我的大部分项目中使用amazon aws,在我的个人博客中使用linode。两种解决方案都在“你是你自己的系统管理员”的模型中,没有人偷看你的机器。

如果我在你的鞋子里,我会使用带有可变键的mcrypt。例如,同一行的用户名字段。这样,对于要泄露的数据,入侵者需要访问您的数据库和源代码,以找出如何解密数据。那时你的问题远比仅仅是信息泄漏还要糟糕。

答案 2 :(得分:0)

主要是托管公司可以访问所有非常糟糕的数据库和文件。

几年前,我做了一些加密和解密的实验。

最好的方法是拥有个人服务器,但这并不便宜。

示例RC4加密需要密钥数据的密钥。现在棘手的部分是使该密钥也使用BASE 64,ATOM 128等其他加密进行加密。这不会使其成为100%安全

但解密数据真的很难。

我希望你能理解我。

干杯:)

顺便说一下,没有100%的安全数据。

答案 3 :(得分:0)

如果您不需要在线解密数据,这是公钥加密的理想情况。特别是密封API。例如,使用libsodium(PHP 7.2):

加密

$store_me = sodium_crypto_box_seal($plaintext, $box_publickey);
sodium_memzero($plaintext);

解密

$plaintext = sodium_crypto_box_seal_open($stored_msg, $box_keypair);

但是,如果您需要能够解密来自网络服务器的数据,那么访问网络服务器的任何人都可以窃取密钥并解密您的数据。没有加密算法可以阻止某人使用密钥解密消息。

始终以threat model开头。

相关问题