在我的数据库中,我存储了通过PHP类动态加密和解密的信息.
每个应用程序我使用附加用户密钥的私钥,以确保只有当用户尝试解密自己的数据时才能成功解密.
用户'密钥'存储在数据库中; 但私钥(应用程序级别)存储为FS中的txt文件.当然,在"网络根"之上.
注意事项: - 如果数据库被黑客入侵:他们最终得到密钥的一部分和加密数据 - 如果PHP停止或损坏:他们最终只有一个页面,只有include('../private/private.php')
在其中.
- 如果NGINX失败:连接"正好"掉线.
我能想到的唯一场景是系统本身的腐败.但是服务器运行防火墙,定期更新,运行fail2ban,只运行所需的服务.SSH只能通过密钥访问等登录
我想知道这是否是"最佳"做法.或者,如果有更好的方法来执行上述规范的这种加密?密钥文件的正确访问权限是什么?
目前,数据库和网络服务器都在面向互联网的同一台服务器上.拆分它们并创建一个只有Web服务器的面向Internet的服务器是否更好; 并将数据库服务器和密钥文件放在专用网络中的其他服务器上?
编辑:加密数据的私钥由两个组件构成:
$key = $app_key . $user_key