【问题标题】:How do I tighten security of my hybrid ASP.NET 1.1 / Ajax solution?如何加强混合 ASP.NET 1.1 / Ajax 解决方案的安全性?
【发布时间】:2008-10-06 17:31:14
【问题描述】:

场景

我有一个 HTML/javascript 网站,它使用 javascriptSOAPClient 与 ASP.NET 1.1 Web 服务进行通信,以便读取/写入 SQL 数据库。 (http://www.codeproject.com/KB/ajax/JavaScriptSOAPClient.aspx)。该数据库包含匿名的人口统计信息——没有姓名、没有信用卡、没有地址。收集的数据本质上是用于数据挖掘目的。

该网站已上线,但我们希望在 javascript/ajax 客户端和 wbe 服务之间为这个和未来的项目引入更安全的通信。作为金融行业的承包商,在某些时候我们会遇到一个问题:这个网站可以被黑客入侵吗?如果我们没有解决方案,我们可能会出声。

我已经在遵循最佳实践,例如通过命令参数和存储过程与数据库进行通信)。然而,目前任何人都可以浏览我们的 Web 服务描述并弄清楚如何使用我们公开的服务。

问题

  1. 对于我的混合解决方案(即不是端到端 Microsoft),我应该如何验证 Web 服务上的客户端请求?
  2. 如果我开始将用户名/密码或其他一些可识别元素作为身份验证传递给 Web 服务,我是否应该关心该密钥是如何在客户端生成/存储的?

【问题讨论】:

  • 只有我觉得这个问题有点长吗?
  • 它是 - 所以我照顾它。

标签: asp.net web-services security soap


【解决方案1】:

需要考虑的一些建议:

  • 列出威胁,并将每个威胁与您当前的设置进行比较。
  • 使用 SSL / HTTPS。这减轻了整个类别的漏洞。
  • 使用 用户名/密码,在服务器端生成并带外(通过邮件或电话)发送给用户。 (希望这能回答问题 2)。
  • 使用两重身份验证。为此,您可以查看 安全令牌,例如 RSA's keyfob-type gizmos 或查看 Steve Gibson 的 Perfect Paper Passwords

【讨论】:

    【解决方案2】:

    从编程的角度来看,最简单的解决方案是使用双向 HTTPS。即服务器向客户端出示证书,客户端向服务器出示证书。然后只有具有适当证书(由您颁发)的客户端才能连接。

    这有助于让客户放心,您的网站通常无法访问,但安全性对应用程序是透明的,一旦他们注册并收到证书,对他们来说也是透明的。缺点是您在发布和跟踪用户证书方面有管理开销——但这可能比您处理用户名/密码组合要少。

    【讨论】:

      【解决方案3】:

      有几个简单的选项:

      1. SSL + Cookie
      2. 如果 Web 应用程序也是 ASP.NET 并与您的 Web 服务一起托管,那么您应该可以访问 Web 服务内的 Web 应用程序的用户/成员资格/会话(基本上是 #1,但您无需做任何工作)。
      3. 如果 Web 应用程序和 Web 服务不在同一个域中,则由于跨域问题导致 cookie 不可用 - 因此您可以让 Web 应用程序将 GUID 嵌入到隐藏的表单字段中,并将该 GUID 用作某种 cookie(它需要作为所有 Web 服务请求的参数传递)。

      【讨论】:

        【解决方案4】:

        你能加入证书认证机制吗?这样只有拥有您可以验证的密钥的客户端才能进行通信?这就是我使用的产品如何将其托管设备与核心通信。

        【讨论】:

        • 这可以通过 javascript 完成吗?另外,假设我可以生成一个密钥并从客户端 -> SOAP -> Web 服务传递它,如何阻止该密钥被嗅探?我想我需要了解有关如何生成证书身份验证的更多信息。
        猜你喜欢
        • 2017-12-09
        • 1970-01-01
        • 2015-05-03
        • 1970-01-01
        • 1970-01-01
        • 2023-02-20
        • 2010-11-21
        • 1970-01-01
        • 2014-10-28
        相关资源
        最近更新 更多