php – 将敏感数据安全地存储在数据库中

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 将敏感数据安全地存储在数据库中脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我目前正在为养老院建立一个网站.
我已经设计了一个在我的数据库中存储私人数据的方案,但我想对你有所了解.

基本上,我有一个表患者,存储有关患者的公共(=非敏感)信息.其他一些信息(如姓名,地址)是私人信息,需要安全存储.我使用由PHP OPEnSSL生成并由网站管理员发送的公钥/私钥对.只有被允许访问私人数据的人(基本上是医疗保健提供者)才知道密码.
我想把它们存放在另一张桌子里.第一个问题,BLOB是存储二进制数据的最佳列类型(使用MysqL).或者应该转换它们(例如使用base64)并将它们存储在VArchAR列中?

我的patient_secure_data表看起来像这样:

id          INT AUTO_INCREMENT
patient_id  INT (FOReiGN KEY to patient.id)
key         VARCHAR(63)
data        BLOB
env         BLOB

它是一个键值表,其值由openssl_seal密封.我需要存储第三个参数($env_keys)以便能够解密数据.所以第二个问题,如果我在拨打openssl_open时拥有私钥的密码,为什么还需要这个env_keys?

第三个(也是最后一个)问题,它是一个安全的数据库架构吗?我的意思是,我可以保证没有密码短语的人可以看到私人数据吗?

注意:我还将使用相同的密钥对来加密存储在磁盘上的文件.但是数据库文件,我看不出有关安全性的任何差异.

问候,

纪尧姆.

对不起,如果我的语言不完美,我不是母语为英语的人……我希望自己能说清楚.

解决方法

1 – BLOB是我的首选,因为将它编码为base64会增加空间和处理时间(因为你必须在解密之前解码base64)

2 – openssl_seal不会为您提供用于加密数据的密钥. env_keys的目的是存储生成的密钥的加密形式.当你调用openssl_open时,你给它这个信封密钥和解密信封密钥所需的私钥.私钥需要与用于生成信封密钥的公钥匹配.

3-如果您的私钥需要密码,那么从技上讲,您的数据相对安全.即使他们有信封密钥和私钥,他们也无法使用它……但是你的密码有多安全?有一点需要注意的是,你几乎永远无法保证一个完全安全的方案,但你绝对可以让黑客更难对付.在这里运用你的想象力.顺便说一下,你的代码中的明文密码是什么

脚本宝典总结

以上是脚本宝典为你收集整理的php – 将敏感数据安全地存储在数据库中全部内容,希望文章能够帮你解决php – 将敏感数据安全地存储在数据库中所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。