在一個項目中,我們使用XML作爲數據庫。後來我們意識到數據的安全性是問題。應用程序的用戶可以使用記事本修改任何數據。以下是我們爲保護數據庫所做的一些事情。XML數據庫的安全性
請注意,應用程序是用點網編寫的。
加密整個XML,程序將解密和使用它,同時節省了加密和保存。(性能問題)
使用點網組件,我們可以加密的節點。(性能問題和大量的代碼需要寫入加密和解密的注意事項。
是否有保證XML的方式使得用戶無法使用記事本只需修改任何最好的方法?
在一個項目中,我們使用XML作爲數據庫。後來我們意識到數據的安全性是問題。應用程序的用戶可以使用記事本修改任何數據。以下是我們爲保護數據庫所做的一些事情。XML數據庫的安全性
請注意,應用程序是用點網編寫的。
加密整個XML,程序將解密和使用它,同時節省了加密和保存。(性能問題)
使用點網組件,我們可以加密的節點。(性能問題和大量的代碼需要寫入加密和解密的注意事項。
是否有保證XML的方式使得用戶無法使用記事本只需修改任何最好的方法?
如果SQL Server是一個選項,並且您的主要目標是防止數據中的窺探,您可以利用SQL Server的XML處理和內置的加密功能(例如,證書,TDE等)來處理加密。這將消除您描述的大部分手動工作。
http://technet.microsoft.com/en-us/library/bb510663.aspx
如果數據需要在整個過程中被加密的(例如,當它是在應用程序的存儲器空間),或者如果數據是在用戶的機器上,則基於SQL的加密不會是實用還是充分。
使用點網組件,我們可以加密的節點。(性能問題和 大量的代碼需要編寫加密和解密的注意事項。
我並不是說這是因爲你沒有提供足夠的細節,正確的解決方案。但是,我認爲你是在兩種假設無效操作。
加密在.NET中是非常強大的,可以用不到100行代碼來執行。您可以使用標準的加密算法或與Windows證書服務集成。
這當然會對性能產生影響,但現代CPU在處理加密所需的數學方面表現出色。除非文件很大,並且/或者您每秒處理數百個文件,否則我不會將設計基於性能問題。
最終,如果數據駐留在用戶的機器上,最關心的將是密鑰的位置和安全性。
贏取應用程序? Web應用程序?哪個數據庫? ... – walther
你將在哪裏存儲解密密鑰,記住用戶基本上需要讀取權限,因爲他們正在運行該程序?聽起來像你需要某種外部服務來控制數據訪問。 –
不清楚你是否擔心誠信或安全?如果後者處於什麼水平。看不到,不能改變,不同的特權級別? –