我需要簡單而可靠的機制來確保該表沒有被篡改的SQL Server 2008的中的假設是,黑客可以訪問和控制僅服務器(應用程序或數據庫)中的一個,但不能同時訪問。任何鏈接或建議將不勝感激。如何確保表在SQL Server 2008中不被篡改?
澄清。這裏的「篡改」意味着在將行插入表中之後更新/刪除行的能力。要保護的表是一種商業交易日誌。
我需要簡單而可靠的機制來確保該表沒有被篡改的SQL Server 2008的中的假設是,黑客可以訪問和控制僅服務器(應用程序或數據庫)中的一個,但不能同時訪問。任何鏈接或建議將不勝感激。如何確保表在SQL Server 2008中不被篡改?
澄清。這裏的「篡改」意味着在將行插入表中之後更新/刪除行的能力。要保護的表是一種商業交易日誌。
如果你真的想去過頂,我建議如下:
把數據庫的DDL觸發器來監視對數據庫的任何更改。
你的時間會更好,確保黑客完全無法進入,因爲只要你開始做出像上面這樣悲觀的假設,那麼你可以確定黑客將進入兩臺服務器。
您可以通過觸發器創建一個審計系統,在任何時候有人對您的數據庫服務器上的表/表進行插入/更新/刪除時,可以創建日誌記錄,但這並不能阻止黑客獲得SA訪問權限您的審計表或主數據庫。
專注於安全性,提供良好的代碼以防止SQL注入攻擊,確保您僅在您的應用程序中使用SQL登錄帳戶,並且只需要他們所需的權限,確保您的數據庫位於DMZ後面,而不是公開訪問的適當防火牆和外部的端口安全,以確保只有面向Web /公共服務的端口處於打開狀態。
如果這是一個生產環境,超出了你的專業知識,也有證券公司誰將會分析你的應用程序的任何vulneribilities以及
假設「黑客」擁有對服務器的合法訪問權限。 「Nuking」日誌或主數據庫足以說明數據庫被篡改:) – Prankster 2009-04-22 13:22:18
......並且您錯過了這一點。 – 2009-04-22 13:26:07
怎麼樣訪問日誌?您可能會看到用戶是否在數據庫或Web應用程序用戶中更改了某些內容。然後,又如何區分Web應用程序用戶的正常和異常活動?
確保您的服務器已正確鎖定顯然是你應該做的第一件事。
一個可能的解決方案,以趕上錯的編輯是,你可以計算的行中的所有領域的某種形式的校驗,並存儲該行作爲一個長期的,難以理解的字符串;如果存儲過程執行了插入/更新命令,則它可以在每次插入/更新時重新計算該校驗和。如果有人直接編輯了數據,即通過Access或Management Studio以及直接編輯的字段,則校驗和將被關閉,下次訪問時,您可以檢測到並執行操作。
當然,如果某人有權訪問SP,那麼一個有動機的黑客將會複製邏輯(或者只是使用SP),但它可能會阻止並捕獲由非惡意的人造成的馬虎直接編輯錯誤,但意外地編輯了他們不應該的數據。
如果你唯一的目的是爲了能夠驗證您的企業事務日誌表中的內容,你可以存儲在,比方說一個哈希值(MD5或SHA),應用服務器上的XML文件。當應用程序向數據庫添加事務時,將一個散列值添加到XML文件中。然後,您可以通過確保...來審覈表中的數據...
首先,如果您使用存儲的procs和nodynamic sql,您可以在proc級別而不是表級別設置權限。這可以防止黑客做任何事情,除非應用程序允許。除dbas之外,沒有人應該對生產中的表有任何權限。
接下來,設置審計表以記錄數據的所有更改,以及它們何時發生以及由誰發起的。如果有人進行未經授權的更改,這可以用來輕鬆獲取數據。
第三,確保您有一個很好的備份計劃運行並每隔15分鐘備份一次事務日誌。確保你的dbas有練習從備份恢復。
第四在sql server 2008中,你可以有ddl觸發器,它會告訴你誰改變了表的結構而不是數據。
究竟是什麼,你會認爲「篡改」,可以區別於正常使用? – 2009-04-22 13:02:15
我已經添加clirification的問題。 – Prankster 2009-04-22 13:15:04