加密数据以存储在数据库中

时间:2011-02-07 18:09:48

标签: c# .net asp.net-mvc security encryption

我们有一个网站,用户将在我们的数据库中保存极其个人和敏感的数据。

我们当然需要在将这些数据存储到数据库之前加密,并使用SSL。它是一个使用表单身份验证的MVC应用程序。确保从我们保存数据到解密显示在个人页面上之前加密数据的最佳方法是什么。

我们还需要确保即使是我们的开发人员和dba在应用程序上工作也是安全的。

处理这种情况的最佳方法是什么?

3 个答案:

答案 0 :(得分:3)

SQL Server有一些内置的 encryption capabilities (dead link) encryption capabilities,你可能会看一下。

答案 1 :(得分:1)

除非您使用公钥加密并且最终用户必须控制此数据,否则无法将DBA保留在数据之外。如果最终用户丢失了密钥,他们将丢失所有数据。

您可以拥有一个单独的数据库来存储密钥,而您的DBA将无法访问此数据库。

您必须拥有两个DBA,一个用于数据,一个用于密钥。

这假设您不信任您的DBA,但是您不应该雇用它们。

如果您信任您的DBA,那么您让他们可以访问这两个数据库,但要求他们拥有单独的帐户,因此如果一个帐户遭到入侵,他们(黑客)将无法访问所有内容。

通常情况下,在设计良好的系统中,DBA / Admins为其个人工作设置了单独的帐户,并提升了工作帐户。

我假设程序员只能访问测试环境。如果他们可以访问生产环境,那么他们就可以访问密钥和数据。

答案 2 :(得分:0)

每个加密都有一个密钥,关键是(获取/不获取)密钥:) 最好的方法是在web.config上设置密钥,你可以在没有任何编程背景的情况下进行操作


我见过一个漂亮的AES Encryption Algorithm implementation at StackOverflow。我建议你使用它。