【问题标题】:sql server vs .net encryptionsql server vs .net 加密
【发布时间】:2011-07-11 23:49:33
【问题描述】:

我必须在数据库表中以加密形式存储少量数据库字段 (~3)。

一般来说,使用 .net 加密技术加密/解密应用程序中的数据还是使用对称密钥加密加密/解密数据库中的数据更好?这两种方法的优缺点是什么?

这是我的环境:
应用程序 - Intranet Web 应用程序
开发平台 - Visual Studio 2010、ASP.Net、.Net Framework 3.5
服务器操作系统 - Windows Server 2008
数据库 - SQL Server 2008

【问题讨论】:

    标签: .net sql-server encryption


    【解决方案1】:

    这是一个很好的问题。

    我的看法是让负责数据存储的部分也负责对其进行任何加密。在这种情况下,让 SQL Server 管理加密。

    主要原因是我们很少再构建独立的应用程序。让多个应用程序使用相同的数据库后端更为常见。此外,替换用于构建应用程序的技术比替换其底层的数据库引擎更为常见。

    如果您在代码中执行此操作,那么每个使用数据存储的应用都必须使用自己的加密/解密库来访问数据。如果在 sql server 中完成,那么在您保持相同级别的保护时,应用程序可能完全不了解该过程。

    除此之外,您还应该利用加密与 SQL 服务器的连接的能力,这将处理在网络/应用服务器和数据库之间移动时保持数据加密的问题。此外,您应该在浏览器和您的网站之间启用 SSL,以确保数据在浏览器 -> Web 服务器 -> 数据库服务器之间永远不会被解密。

    希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      对于您不担心来自 Internet 的“调查员”的内部应用程序,我更喜欢在数据库中进行加密。这样,如果您的应用程序出现问题(无论出于何种原因),您将不依赖该应用程序来获取数据。因此,您的应用程序也不依赖于加密机制或执行应用程序的开销。它可以假设它将在数据库中得到处理,从而使代码更易于维护。

      对于具有多个接口或网关的应用程序也更方便。数据集中加密/解密。但是,在这种情况下,您需要确保数据通过安全隧道(SSL 或 VPN 或类似的东西)传入/传出数据库,否则加密数据并不意味着全部;它可以很容易地被标准的网络嗅探器拦截。

      对于共享托管环境,出于安全目的,我更喜欢在应用程序内进行加密。在这种情况下,我控制的是密钥,而不是主机提供商。

      【讨论】:

        猜你喜欢
        • 2011-01-10
        • 2011-04-29
        • 2011-09-23
        • 2013-09-22
        • 1970-01-01
        • 1970-01-01
        • 2011-03-10
        • 1970-01-01
        • 2011-06-05
        相关资源
        最近更新 更多