【发布时间】:2009-05-12 12:10:32
【问题描述】:
什么是在数据库表中存储用户名和密码(不是 asp.net 成员详细信息)的安全方式,需要将其提取并解密以用于传递给 Web 服务。
我发现问题的每一种方式都发现了安全漏洞,因为用户名和密码在传递给 Web 服务之前需要采用纯文本格式。
【问题讨论】:
标签: asp.net sql web-services security
什么是在数据库表中存储用户名和密码(不是 asp.net 成员详细信息)的安全方式,需要将其提取并解密以用于传递给 Web 服务。
我发现问题的每一种方式都发现了安全漏洞,因为用户名和密码在传递给 Web 服务之前需要采用纯文本格式。
【问题讨论】:
标签: asp.net sql web-services security
一些建议:
用于存储数据
传递给网络服务
【讨论】:
恕我直言,您永远不会解密数据...
在第一次保存数据之前使用单向加密加密数据,在密码和用户名上使用它。
当用户登录时,您加密用户名和密码,然后检查加密值在数据库上是否匹配。即你不需要解密。
因为它的一种加密方式很难解密(有人说它只需要很长时间才能让它值得黑客攻击)这就是为什么是一种方式......
MS encrypto 类提供 1 路加密。
希望对你有帮助
朱尔斯
【讨论】:
正如费尔明所说, 您是否可以访问/控制另一端的 Web 服务。
如果是这样,您应该发送加密的详细信息。但是,即使您发送的用户名和密码对是加密的。有人仍然可以嗅探它们并拥有一对有效的 UN 和 PW。
HTTPS 在这种情况下会有所帮助。
没有 100% 安全的方式通过网络发送敏感数据。 这是一个尽力而为的案例。
【讨论】:
T-SQL 支持许多可用于加密数据的cryptographic functions(例如,如果客户端尚未使用存储过程,则通过而不是触发器)。
在数据库引擎中进行加密应该是最后的手段,最好在链的早期进行。
几年前MSDN magazine 有一篇文章介绍了这些函数的用法。
【讨论】:
你不能用webservice的方法把它们解密,然后从数据库中传入加密的字符串吗?
【讨论】: