在其中一个项目中,我们使用XML作为数据库。后来我们意识到数据的安全性是个问题。应用程序的用户可以使用记事本修改任何数据。以下是我们可以采取的一些措施来保护数据库。
请注意,应用程序是用dot net编写的。
加密整个xml,程序将解密并使用它,同时保存加密并保存。(性能问题)
使用dot net assembly我们可以加密节点。(需要编写性能问题和大量代码来加密和解密笔记。
有没有最好的方法来保护XML,使得用户不能简单地使用记事本进行修改。
答案 0 :(得分:0)
如果SQL Server是一个选项,并且您的主要目标是防止数据中的窥探,您可以利用SQL Server的XML处理和内置加密功能(例如证书,TDE等)来处理加密。这将消除您描述的大多数手动工作。
http://technet.microsoft.com/en-us/library/bb510663.aspx
如果数据需要在整个过程中加密(例如,当它在应用程序的内存空间中时)或者数据在用户的计算机上,那么基于SQL的加密将不实用或不充分。 / p>
使用dot net assembly我们可以加密节点。(性能问题和 需要编写大量代码来加密和解密笔记。
我不是说这是正确的解决方案,因为你没有提供足够的细节。但是,我认为您在两个无效的假设下运作。
.NET中的加密非常强大,可以使用少于100行的代码执行。您可以使用标准加密算法或与Windows证书服务集成。
当然会对性能产生影响,但现代CPU在处理加密所需的数学方面做得非常出色。除非文件很大和/或你每秒处理数百个文件,否则我不会将设计基于性能问题。
最终,如果数据驻留在用户的计算机上,最关心的是密钥的位置和安全性。