【发布时间】:2012-03-28 01:08:36
【问题描述】:
我目前正在为疗养院建立一个网站。 我已经设计了一个方案来在我的数据库中存储私人数据,但我想听听你的意见。
基本上,我有一个表patient,它存储了关于患者的公共(=非敏感)信息。其他一些信息(如姓名、地址)是私人信息,需要安全存储。我使用由 PHP OpenSSL 生成并由网站管理员发送的公钥/私钥对。密码只有被允许访问私人数据的人(基本上是医疗保健提供者)知道。
我想将它们存储在另一个表中。 第一个问题,BLOB 是存储二进制数据的最佳列类型(使用 MySQL)。或者我应该转换它们(例如base64)并将它们存储在VARCHAR 列中?
我的patient_secure_data 表如下所示:
它是一个键值表,其中值被openssl_seal密封。我需要存储第三个参数 ($env_keys) 才能解密数据。那么第二个问题,如果我在调用openssl_open 时拥有私钥的密码,为什么还需要这个env_keys?
第三个(也是最后一个)问题,它是一个安全 数据库架构吗?我的意思是,我能保证没有密码的人不能看到私人数据吗?
注意:我还将使用相同的密钥对来加密存储在磁盘上的文件。但是数据库或文件,我看不出有关安全性的任何差异。
问候,
纪尧姆。
对不起,如果我的语言不完美,我不是以英语为母语的人......我希望我说清楚了。
【问题讨论】:
-
BLOB 比 based64 varchar 更节省空间。
-
key列是什么类型的键? -
表示信息的类型。它可以包含
'first_name'、'last_name'、'city'...