【问题标题】:C# web service password in the request to be encrypted需要加密的请求中的 C# Web 服务密码
【发布时间】:2012-03-05 14:36:29
【问题描述】:

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

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

【问题讨论】:

    标签: c# web-services security


    【解决方案1】:

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

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

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

    Jeff Atwood 对存储和散列密码背后的问题进行了很好的解释 - coding horror link

    【讨论】:

    • Web 服务将是 HTTPS,但我的疑问是,通过 HTTPS 以明文形式发送密码可以吗?
    • 是的,可以通过 HTTPS 以纯文本形式发送密码。这就是通常的做法。该协议处理加密。
    【解决方案2】:

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

    使用 SSL 将信息直接传递给您的应用程序本质上就是按照您的要求进行操作,并且是公认的安全接收密码的方式。您只需检查数据库中的加密版本即可。

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

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

    【讨论】:

      【解决方案3】:

      你可以使用System.Security.Cryptography;加密你需要的信息

      请看下面:

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

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

      【讨论】:

      • 这个可以和asmx web services一起使用吗?
      猜你喜欢
      • 2010-09-06
      • 1970-01-01
      • 2018-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多