SQL Server - 存储敏感数据

时间:2009-05-12 12:10:32

标签: asp.net sql web-services security

在数据库表中存储用户名和密码(不是asp.net成员资格详细信息)的安全方法是什么,需要将其拉出并解密以用于传递给Web服务。

我想到问题的每种方式我都会发现安全漏洞,因为用户名和密码在传递给Web服务之前必须是纯文本。

5 个答案:

答案 0 :(得分:5)

一些建议:

用于存储数据

  1. 插入
  2. 时加密数据(最好是CryptoAPI调用)
  3. 确保在客户端和SQL Server之间启用了加密
  4. 如果您使用SQL 2008启用MDF / LDF文件的加密
  5. 传递给网络服务

    1. 如果您使用的是.NET,则应使用SecureString将其保护在应用程序的内存中。
    2. 确保Web服务使用SSL来保护网络

答案 1 :(得分:2)

恕我直言,你永远不会忘记数据...

在首次保存之前使用单向加密来加密数据,在密码和用户名上使用此方法。

当用户登录时,您将包含用户名和密码,然后检查数据库上的加密值是否匹配。即你不需要忘记。

因为它的单向加密非常难以解决(有人说它只需要很长时间才能使其值得黑客攻击)这就是为什么这是一种方式......

MS encrypto class提供单向加密。

希望这会有所帮助

答案 2 :(得分:1)

正如费尔明所说, 您是否可以访问/控制另一端的Web服务。

如果是这样,您应该发送加密的详细信息。但是,即使您发送加密的用户名和密码对。有人仍然可以嗅闻他们并拥有一对有效的UN和PW。

在这种情况下,HTTPS会有所帮助。

没有100%安全的方式通过网络发送敏感数据。 这是一个尽你所能的情况。

答案 3 :(得分:0)

T-SQL支持许多可用于加密数据的cryptographic functions(例如,如果客户端尚未使用存储过程,则通过而不是触发器)。

在数据库引擎中进行加密应该是最后的手段,远比先前在链中做得好得多。

几年前在MSDN magazine中有一篇文章介绍了这些功能的用法。

答案 4 :(得分:-1)

你不能使用webservice方法解密它们并从数据库传入加密字符串吗?