2013-01-09 78 views
1

我們的應用程序將存儲來自用戶的一些信息,我們不希望將其追溯到數據庫中的任何其他記錄。例如(儘管是一個愚蠢的) - 用戶必須支付匿名告訴我們他們最喜歡的顏色是什麼。我們希望將每個彩色記錄作爲新行存儲在數據庫中並跟蹤交易信息。將匿名信息存儲在數據庫中

如果我們將顏色和事務存儲在單獨的表中,那麼如果服務器被黑客入侵,通過使用行的順序ID(因爲顏色總是有事務)或者由該行的創建時間。因此,爲了解決這個問題,我們不會爲顏色表​​創建順序標識列,或者爲顏色表創建更新/修改時間。

現在,將顏色與事務相關聯的唯一方法是查看用於實際存儲數據庫信息的文件。雖然這可能是困難和乏味的,但我想這仍然是可能的,因爲顏色表信息可能會按順序存儲在文件中。

如何將數據庫信息存儲在無序的問題中,以避免這種情況發生?我想一個更普遍的問題是如何匿名和安全地存儲信息? (但這太寬了)

顯然,答案是不要讓你的數據庫被黑客攻擊,但不是一個好的。

+0

這是一個準確的假設,數據將按順序存儲? – Joe

+0

呃,如果沒有其他人可以,你將如何關聯兩張表? – Madbreaks

+0

@Joe - 我不確定,但我不想讓它失去機會。我們正在使用postgres,但如果有一些已知的隨機存儲方式,我也歡迎使用它。 – zsalzbank

回答

2

您可以預先生成數百萬行並隨機填充它們。

+0

也許通過運行當前時間的SHA1 +鹽來改變行數,通過從那裏按順序搜索處理衝突下一個開放。 – Phrogz

+0

正確。該方案將類似於hashmap如何插入條目。 – mcassano

+0

這是天才。 – zsalzbank

0

如果你需要分析數據,你需要了解它,如果你能攻擊者也可以。無論採用什麼聰明的解決方案,你都會得到相關性仍然是可能的。關係數據庫事務日誌將顯示什麼以及何時何地被插入更新刪除。所以如果你想使用相同的數據庫,你不能提供100%的數據解耦。您可以使用某些HSM加密數據,這會使竊取的數據對攻擊者無用。或者,您可以將數據存儲在某個其他機器上,具有隨機延遲或某些批處理,(等待並插入20條記錄而不是一條)......但這可能會非常棘手,並且可能會失敗。

+0

我並不擔心數據被理解,而是與數據庫中的其他記錄相關聯。我也不需要這種關聯,所以我試圖消除所有可能發生的情況。數據庫日誌可以過濾和/或關閉,所以我不太擔心這些。 – zsalzbank

相關問題