2012-05-09 74 views
1

在一個項目中,我們使用XML作爲數據庫。後來我們意識到數據的安全性是問題。應用程序的用戶可以使用記事本修改任何數據。以下是我們爲保護數據庫所做的一些事情。XML數據庫的安全性

請注意,應用程序是用點網編寫的。

  1. 加密整個XML,程序將解密和使用它,同時節省了加密和保存。(性能問題)

  2. 使用點網組件,我們可以加密的節點。(性能問題和大量的代碼需要寫入加密和解密的注意事項。

是否有保證XML的方式使得用戶無法使用記事本只需修改任何最好的方法?

+0

贏取應用程序? Web應用程序?哪個數據庫? ... – walther

+0

你將在哪裏存儲解密密鑰,記住用戶基本上需要讀取權限,因爲他們正在運行該程序?聽起來像你需要某種外部服務來控制數據訪問。 –

+0

不清楚你是否擔心誠信或安全?如果後者處於什麼水平。看不到,不能改變,不同的特權級別? –

回答

0

如果SQL Server是一個選項,並且您的主要目標是防止數據中的窺探,您可以利用SQL Server的XML處理和內置的加密功能(例如,證書,TDE等)來處理加密。這將消除您描述的大部分手動工作。

http://technet.microsoft.com/en-us/library/bb510663.aspx

如果數據需要在整個過程中被加密的(例如,當它是在應用程序的存儲器空間),或者如果數據是在用戶的機器上,則基於SQL的加密不會是實用還是充分。

使用點網組件,我們可以加密的節點。(性能問題和 大量的代碼需要編寫加密和解密的注意事項。

我並不是說這是因爲你沒有提供足夠的細節,正確的解決方案。但是,我認爲你是在兩種假設無效操作。

  • 加密在.NET中是非常強大的,可以用不到100行代碼來執行。您可以使用標準的加密算法或與Windows證書服務集成。

  • 這當然會對性能產生影響,但現代CPU在處理加密所需的數學方面表現出色。除非文件很大,並且/或者您每秒處理數百個文件,否則我不會將設計基於性能問題。

最終,如果數據駐留在用戶的機器上,最關心的將是密鑰的位置和安全性。

+0

他說這是一個XML數據庫。 SQL服務器可以使用原始xml文件作爲存儲介質嗎? – walther

+0

@walther - 呃...完全誤解了問題的這一部分,並在那裏看到了「SQL」。感謝您指出了這一點。實際上,SQL可以用來使用'FILESTREAM'來引用外部文件。可能是一個選項。 –

+0

我只是使用純文本XML文件來存儲數據。不使用任何數據庫管理系統。 – Saran