Sql-Server

數據庫文件儲存安全問題

  • May 6, 2011

我工作的公司的一位客戶決定將文件儲存在 SQL(很可能是 mySQL)數據庫中。據我所知,這是可能的,只需在其中儲存二進製文件或包含文件即可。但這不是問題。

主要模式是網頁儲存在一台伺服器和數據庫中,並將文件上傳到另一個伺服器數據庫中的另一個或網頁中,並將文件上傳到數據庫中。以下解決方案是我們有疑問的解決方案。

主要原因是安全。在這種情況下,您可以提供哪些最佳安全解決方案?我擔心通過破壞 sql server 他們會得到文件,因為 sql 注入的中斷比伺服器更常見,更重要的是伺服器在公司內部,只有真正的安全連接可用,更重要的是,如果 sql server 崩潰,這將是痛苦的自從 sql 轉儲以來恢復一切的屁股會重很多。

我正在為這種情況尋求論據和其他解決方案。

將文件儲存在數據庫中意味著添加自定義程式碼來處理對文件的訪問。雖然這提供了實現底層作業系統不直接支持的複雜安全模型的機會,但添加的程式碼越多,注入錯誤的可能性就越大,這會損害數據的安全性/完整性。

雖然我必須承認我不是 SQL Server 方面的專家(但我確實對 mysql 有所了解),但這種方法要求程式碼以數據域內的超級使用者權限執行;與普通文件訪問不同,沒有權限分離。因此,如果系統受到損害,它就完全受到損害。與作業系統使用者帳戶被盜用的情況不同 - 風險大大減少。將此與 Microsoft 平台上的病毒問題與 Unix 平台相比——為 Unix 編寫病毒並不難——但直到最近大多數 Microsoft 系統都不需要特權分離。

伺服器在公司內部,只有真正的安全連接可用

並不是一個很大的優勢——查看數據洩露的統計數據——無論如何,大多數都是內部的。

由於 sql 轉儲將重達一噸,因此恢復所有內容將是一件痛苦的事

沒錯,雖然在數據庫上進行分區/增量備份比在文件系統上容易得多——但這又意味著添加更多程式碼 = 添加更多錯誤。最大的問題是這是一種非標準的工作方式。雖然您可以放心,初級員工可以通過文件系統備份出現在您的災難恢復站點並能夠輕鬆地恢復數據,但對應用程序備份執行相同操作則是另一回事。當然,您在選擇用於自動訪問文件的工具(備份、反病毒掃描、重複數據刪除、歸檔……)方面會受到更多限制。

此外,通過 HTTP 傳遞文件,您已經失去了對文件的所有並發控制。

另一個考慮因素是,當然對於 mysql,一旦表超出單個磁碟上的空間,增加更多容量並非易事。

可以通過將文件保留在文件系統上但通過提供基於 Web 的前端來減輕其中一些影響。如果你做對了,那麼你仍然可以使用權限分離(通過在瀏覽器和每個使用者/會話之間執行網路伺服器作為代理來處理以經過身份驗證的使用者的權限執行的實際 I/O)。但是您仍然失去了並發控制,並且還有其他類型的漏洞可以被利用。

作為一家 IT 服務公司,這是從客戶那裡賺錢的好方法——向他們出售他們不需要的東西,讓他們使用它來儲存他們的關鍵資產,然後為支持它而向他們收費。但從客戶的角度來看,這是一個非常糟糕的主意。

引用自:https://serverfault.com/questions/266900