一千萬個為什麽

搜索

應用程序自我感知外部數據庫記錄修改

如何使應用程序意識到外部應用程序而不是應用程序本身更改或創建了數據庫記錄?

是否向數據庫記錄添加了特殊的校驗和,或者如何停止對數據庫的外部更改? (如果它被黑客攻擊並且黑客決定添加新記錄或更改現有數據庫記錄)

最佳答案

有三個問題要問:

如何確定行已更改?

你有一些選擇:

  1. 重新查詢數據並進行比較。這將告訴您哪些列已更改(但不一定是由誰更改)。
  2. 使用 rowversion 列(在舊版本的SQL Server中稱為 timestamp ),每次更改行時都會自行更新。這只會告訴您某些內容已更改,但不會更改哪些列或更改了哪些列。

如何確定該行是由外部應用程序創建的   而不是你自己的應用程序

這個有點棘手。從技術上講,您可能認為只需將應用程序的名稱寫入行中的列可能就足夠了,但該技術並不安全。有權保存到此列的外部應用程序可以輕松地執行相同操作。更安全的方法是使用外部監視程序來跟蹤對數據庫和創建數據庫的用戶所做的每個更改。在SQL Server 2008中,有一個名為“更改跟蹤”的功能,它圍繞類似的功能,也可能就足夠了。

如何阻止外部更改   數據庫?

顯而易見的選擇是限制對數據庫的訪問。只允許應用程序帳戶訪問數據庫和/或訪問表和存儲過程。此外,您需要鎖定管理員和開發人員對數據庫的訪問權限,以便只有少數人可以訪問數據庫。結合良好的日誌記錄,可以防止出現神秘行。

轉載註明原文: 應用程序自我感知外部數據庫記錄修改