繁体   English   中英

如何隐藏数据库表的外键关系或创建匿名条目?

[英]How can I hide the foreign key relationship of a database table or create anonymous entries?

是否可以在不显式揭示其关系或所有者的情况下将关联数据存储在数据库中? 本页讨论使用用户信息的哈希值和密码来识别事务所属的用户。 一些搜索没有发现此安全功能的实现细节。

假设我的用户的帐户绑定了私有数据,那么我该如何做到这一点,以便可以访问数据库转储的人无法分辨哪些数据属于哪个用户?

它不是安全功能,而是设计模式(或者可以说是反模式)。 您链接的页面描述了它们的实现方式:敏感信息与标识符一起存储,该标识符无法在不交叉引用数据库外部信息的情况下追溯到任何给定用户。 在他们的示例中,它是密码,当与其他帐户信息结合并进行哈希处理时,该密码将为该用户的交易生成一致的ID。 为了正确地将用户与其交易关联,您需要原始密码来重建哈希。 没有密码=没有关联。

这样就可以了; 它牺牲了参照完整性,这就是为什么我称其为反模式,但这就是整个想法。 更大的问题是它可能是最敏感的一点,因为无论何时用于生成散列的信息发生变化,都必须为用户的所有交易更新散列。 缺少外键约束还允许没有任何用户的假交易。 从结构上来讲,拥有一个与交易表具有适当外键关系的交易所有者的匿名表和将所有者实体链接到实际用户的哈希表,在某种程度上会更安全。 这样,敏感关系是一对一的,而不是一对多的,并且可以限制完整性故障的影响。

当然,这两种方法都容易受到简单的耐心和分析的影响-如果某人具有数据库转储并且具有足够的动机,那么只要绑定了事务,事务本身就足以了解谁创建了它们一致的用户哈希或所有者。 一份披萨送货费可能不算什么; 有几个人将您带到某人房屋的几英里内。 您可以与匿名记录关联的信息越多,匿名记录实际上就越少。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM