2016-12-24 81 views
0

是否有可能將關聯數據存儲在數據庫中而不明確揭示其關係或所有者? This page談論使用用戶信息的散列結合密碼來識別交易所屬的用戶。一些搜索沒有透露此安全功能的實施細節。如何隱藏數據庫表的外鍵關係或創建匿名條目?

假設我的用戶有私人數據綁定到他們的賬戶,我怎麼能這樣做,以便有權訪問數據庫轉儲的人不能分辨哪些數據屬於哪個用戶?

回答

0

這不是一個安全功能,它是一種設計模式(或者可以說是反模式)。鏈接的頁面描述了他們如何實現它:敏感信息存儲在一個標識符中,該標識符無法追溯到任何給定的用戶,而無需在數據庫外部交叉引用信息。在他們的例子中,它是密碼,當與其他帳戶信息和哈希結合使用時,會爲該用戶的事務生成一致的ID。爲了正確地將用戶與他們的交易相關聯,您需要原始密碼來重建哈希。沒有密碼=沒有關聯。

這樣做的工作;它犧牲了參照完整性,這就是爲什麼我將其稱爲反模式,但那就是整個想法。更大的問題是它可能是最敏感的可能點,因爲只要用於生成信息的信息發生更改,就必須更新所有用戶交易的哈希值。沒有外鍵約束也允許沒有任何用戶的虛假交易。從結構上講,建立一個匿名化的交易所有者表與交易表具有適當的外鍵關係並且如所描述的將所有者實體鏈接到實際用戶所描述的散列表會更安全一些。這樣,敏感關係是一對一而不是一對多的,並且完整性失敗的影響受到限制。

當然,這兩種方法都容易受到簡單的耐心和分析的影響 - 如果有人擁有數據庫轉儲並且有足夠的動機,交易本身就足以瞭解誰製造它們,只要他們'綁定到一致的用戶散列或所有者。一份比薩送貨費可能是任何東西;幾個人把你放在別人家幾英里的地方。您可以將更多的信息與匿名記錄關聯起來,實際上它的匿名程度就越低。