加密/匿名用户健康数据php / mySQLi

时间:2014-07-08 01:31:22

标签: php json encryption mysqli bcrypt

我正在开发一个PHP / MySQLi应用程序,它收集有关用户的基本健康数据(年龄/身高/体重等)并询问他们关于他们的生活方式的各种问题(饮酒,工作中的快乐等)。

我目前正在使用salted bcrypt进行密码安全,并为用户和健康数据分开表(通过用户ID连接),但客户端也希望数据加密,并以黑客可以存储的方式存储不要将用户表中的用户与数据表中的数据连接起来。

没有大量数据需要存储,我想知道将所有用户的健康数据存储在JSON中并使用bcrypt加密JSON,所以即使数据库中的两个表都已链接,在不知道密码的情况下无法检索数据。

还有其他/更好的方法吗?有没有办法阻止黑客能够将用户表中的用户与数据表中的数据连接起来?该行业如何处理这个问题?

非常感谢提前:)

1 个答案:

答案 0 :(得分:0)

  

我目前正在使用盐腌的bcrypt来确保密码安全

太好了!

  

以及用于用户和健康数据的单独表(通过用户ID连接),但是客户端也希望对数据进行加密,并且存储方式使黑客无法将用户表中的用户与用户表中的数据连接数据表。

     

没有大量数据要存储,我想知道如何将用户的所有健康数据存储在JSON中并使用bcrypt加密JSON,因此即使db中的两个表都已链接,数据也无法会在不知道密码的情况下被取回。

因此,bcrypt不是加密功能,而是密码哈希功能。

这时,我想到了两种可能性:

  1. 您正在尝试使用bcrypt进行加密,这将无法正常工作。
  2. 您实际上是用河豚而不是bcrypt来加密密码,这很糟糕!

如果您使用河豚来加密,而不是使用bcrypt密码哈希功能,则应立即解决此问题。 password_hash()password_verify()是您的朋友!

  

还有另一种/更好的方法吗?有什么方法可以防止黑客将用户表中的用户与其数据表中的数据连接起来?

有一个名为CipherSweet的开源库,它以一种可以对数据进行加密的方式,使您可以通过带有盲索引的加密字段将它们连接起来。可以使用allows false positives这样的方式来构造盲索引,因此使攻击者无法将表链接在一起。

您很有可能最终将使用CipherSweet的EncryptedMultiRows功能来使其易于管理。

  

行业如何处理?

很差。现有的解决方案不应用于启发。您必须要有点前卫。