加密/匿名用户健康数据 php/mySQLi
Posted
技术标签:
【中文标题】加密/匿名用户健康数据 php/mySQLi【英文标题】:Encrypt / anonymize user health data php/mySQLi 【发布时间】:2014-08-28 15:10:12 【问题描述】:我正在开发一个 php/mysqli 应用程序,它收集有关用户的基本健康数据(年龄/身高/体重等),并向他们询问有关他们生活方式的各种问题(饮酒量、工作幸福感等)。
我目前正在使用 salted bcrypt 来确保密码安全,并使用单独的表来存储用户和健康数据(通过用户 ID 连接),但客户端也希望数据加密,并以黑客无法连接的方式存储用户表中的用户与数据表中的数据。
没有大量的数据要存储,我想知道将所有用户的健康数据存储在 JSON 中并使用 bcrypt 加密 JSON,所以即使 db 中的两个表被链接,数据也无法'不知道密码就无法找回。
还有其他/更好的方法吗?有没有办法防止黑客能够将用户表中的用户与数据表中的数据联系起来?业界如何处理?
提前非常感谢:)
【问题讨论】:
bcrypt 不是一种加密算法,它是一种单向密码散列算法。如果你用 bcrypt “加密”你的数据,你将永远无法取回原始数据。 无论如何,以任何方式将数据的加密与用户密码联系起来都是一个坏主意,除非您不打算提供任何类型的密码重置。 【参考方案1】:我目前正在使用 salted bcrypt 来确保密码安全
太棒了!
并为用户和健康数据分开表(通过用户 ID 连接),但客户端也希望数据加密,并以黑客无法将用户表中的用户与数据表。
没有大量的数据要存储,我想知道将所有用户的健康数据存储在 JSON 中并使用 bcrypt 加密 JSON,所以即使 db 中的两个表被链接,数据也无法'不知道密码就无法找回。
所以,bcrypt 不是加密函数,而是密码哈希函数。
此时,我想到了两种可能性:
-
您正在尝试使用 bcrypt 进行加密,这不起作用。
您实际上是在使用河豚而不是 bcrypt 加密密码,这很糟糕!
如果您使用河豚加密,而不是 bcrypt 密码散列函数,您应该立即解决这个问题。 password_hash()
和 password_verify()
是你的朋友!
还有其他/更好的方法吗?有没有办法防止黑客能够将用户表中的用户与数据表中的数据联系起来?
有一个名为CipherSweet 的开源库以这样一种方式加密数据,您可以通过带有盲索引的加密字段连接它们。盲索引可以以allows false positives 的方式构建,因此攻击者无法使用将表链接在一起。
您很可能最终会使用 CipherSweet 的 EncryptedMultiRows
功能来使其易于管理。
行业如何处理这个问题?
不好。现有的解决方案不应被用作灵感。你必须有点前卫。
【讨论】:
以上是关于加密/匿名用户健康数据 php/mySQLi的主要内容,如果未能解决你的问题,请参考以下文章
Tor Browser(洋葱浏览器)——一款使你匿名上网的浏览器
python --递归--匿名函数--枚举--xlwt模块--redis--mysql--加密解密