有没有办法设计一个数据库,在系统入侵的情况下可以保护用户的个人资料数据?
例如,私人数据可能很有价值,即使它可能与金融交易或密码没有直接关系。 [电话号码,电子邮件地址等可能会转售]
有没有办法设计一个基于会员的网站,其中个人信息由网站的授权代理人存储和操纵。但是,在这种情况下,如果数据库与系统断开连接,数据可能会贬值。
我意识到大多数用户隐私和数据问题主要集中在UI上,并阻止未经授权的用户访问与他们无关的数据。但是,我的问题是如何在后端本身内保护用户信息。我也意识到这是一个失去数据访问权限的案例[你可以做任何反应性的(技术明智的)],但我想要发现的是,如果可以采取主动措施来抑制这种打击。
我的问题是:如何在不背离数据的实际目的的情况下保护个人数据?
我可以看到需要加密所有信息,但这会阻止群组访问与用户相关的数据。例如,您可以使用私钥加密用户的邮政编码,但是如何保留使用邮政编码的位置信息的能力。 [也许是向用户提出索赔“这些人可能就在你身边”]
在这种假设情况下,攻击者获得了一个被利用的数据库。他们不能使用原始系统来操纵数据库。
答案 0 :(得分:1)
如果您只在登录时访问用户信息,则可以使用其密码解密数据库中的数据。在此期间,您可以从邮政编码中计算单向哈希值,并存储未加密的哈希值。但是,如果您在网站的生命周期内开发数据库,您将无法更新从未登录的旧用户的信息。也许这在实践中不是问题。
答案 1 :(得分:1)
我将假设您指出入侵者不仅获得了对机器的访问权限,而且还获得了任何MySQL密码。
在这种情况下,我能想到的唯一解决方案是在数据库下使用加密文件系统。
即使在那里,你仍然失去了对设备的物理控制 - 所以如果入侵者已经找到fs的解密密钥,那么你仍然是众所周知的小溪。
另一种选择是拆分应用程序,以便网站和数据库不共享同一系统。当然,通常使用只读用户运行网站是一个好主意™:)
以散列或加密形式将数据存储在数据库中是一个良好的开端,但您仍然需要访问解密密钥,否则它将成为gobbledygook。
当然,最终保护数据库的最佳方法是阻止访问 - 这不是一个可行的解决方案。
如果/当银行或商店的客户列表以未经授权的形式访问时,这个问题会定期出现在媒体上 - 数据仅通过接口/应用程序安全:它仍在在其他一切之下的某些地方明确表示。
答案 2 :(得分:0)
正确的访问控制可能是您示例中最明智的方法,因为您不想放弃,例如,能够对相关字段进行排序或查询。