2017-03-08 90 views
0

因此,這與代碼本身較少有關,更多的是關於效率和實用性。 在我以前的工作中,我們有多個數據庫。一種可以通過公共手段訪問,一種只能私下訪問。公共數據庫本質上可以顯示私人數據庫所做的一切,而且他們幾乎同步,每隔2分鐘左右更新一次。 他們的想法是,如果公共數據庫被某種類型的SQL注入或其他惡意破壞數據庫的破壞,它不會損害生產,並且可以立即恢復。SQL雙重數據庫安全

但是,這是一個非常小規模的操作,一次只有大約100人訪問數據庫,如果發生任何不良事件,我肯定有人不得不手動進入並恢復數據庫以解決問題。

我的問題是,這是一種正確的做事方式嗎?這種策略何時會開始變得令人難以置信的低效率?假設如果每天有數以萬計的查詢會不可維護?

感謝您的洞察力。

+1

「這是一種正確的做事方式嗎?」 - 可能不會。不要直接暴露數據庫。放置一個許可的API;至少只讀視圖。也不要混合使用OLTP和OLAP問題。 –

+0

*公共數據庫*總是一個壞主意。但是:如果您的公共數據庫受SQL注入影響,那麼您的私有數據庫也是如此 - 因爲不知何故,數據必須到達那裏,不是嗎?此外,而不是數據銷燬,這可以通過**備份**來減輕,您應該更擔心數據泄漏。所以你的大部分努力都應該讓你的**代碼安全**和你的數據庫**不公開** –

回答

0

第一道防線必須是已經訪問過數據庫的軟件,有很多方法可以防止SQL注入,比如使用SP,發送參數而不是查詢,... 雖然如果系統的用戶是提供擁有私有數據庫的數據(比如這個論壇)並不比擁有數據庫副本(你說每2分鐘同步一次,公共私有數據庫中的任何更改也會改變私有數據庫)要好。您可以以不同的時間間隔擁有不同的數據副本,並且隨時可以在任何情況發生時回滾到合適的數據副本。

我曾經爲一家銀行工作,他們在磁帶上覆制!這是一個只寫一次/只讀磁帶,以防比sql注入更大的事情發生!