要加密的请求中的C#Web服务密码

时间:2012-03-05 14:36:29

标签: c# web-services security

我正在处理网络服务。用户将能够使用不同asp.net项目上的表单创建用户帐户。因此,当用户输入密码信息时,我需要存储加密到数据库中的信息。但是现在当用户通过Web服务发送用户凭据时,我需要用户发送该密码以用于安全目的。

现在我们如何才能拥有相同的ecrption程序,以便我能够验证请求。

3 个答案:

答案 0 :(得分:4)

您想要的是使用HTTPS连接将密码从用户安全地传输到服务器。以下是有关如何使用IIS for HTTPS设置开发环境的说明 - scottgu link

HTTPS协议将处理加密和解密,您只需处理服务器端的纯文本密码。

之后,在服务器端,您计算密码的哈希值并将其与存储在数据库中的哈希值进行比较。可以使用标准的ASP.NET SQL成员资格提供程序。

Jeff Atwood对存储和散列密码的问题有一个很好的解释 - coding horror link

答案 1 :(得分:1)

您可以使用System.Security.Cryptography;

加密所需的信息

看看下面的内容:

http://jakkaj.wordpress.com/2007/10/27/encrypting-and-securing-web-service-traffic-without-ssl/

请记住,您提供的任何不使用SSL / TLS的“加密”都可能容易受到攻击

答案 2 :(得分:1)

如果用户的浏览器以任何方式知道如何加密您的密码,那么您就会失去理由,聪明的黑客可以提取该加密。

使用SSL将信息直接传递到您的应用程序基本上是在做您所要求的,并且是接受密码的可接受的安全方式。您只需要检查数据库中的加密版本。

您的应用程序接收到原始密码(浏览器和服务器负责加密/解密),然后您的应用程序对其进行加密并在数据库中查找匹配项。

使用Web服务完成此操作的另一种方法是使用单个登录步骤,该步骤返回用于进一步通信的过期令牌。 OAuth是最受欢迎的,所以在谷歌上搜索一下。