【问题标题】:Securing information on a public service from man-in-the-middle从中间人保护公共服务信息
【发布时间】:2013-04-21 15:06:29
【问题描述】:

如何保护提供私人信息的公共服务的信息?

该服务根据客户端发送给它的用户名和密码提供一些信息。例如:

请求

<get-my-info>
 <username>username</username>
 <password>password</password>
</get-my-info>

回应

<your-info>
 <private-info-a>private-info-a</private-info-a>
 <private-info-b>private-info-b</private-info-b>
</your-info>

该服务应该相当容易使用并允许新客户端出现,因此强制客户端注册与其关联的密钥不是一种选择。

将私钥放在服务器上并发送公钥供客户端加密敏感信息是否足够?因此只有服务器可以解密来自客户端的消息,并且所有客户端都将使用相同的公钥,从而更容易创建新客户端。

该服务正在连接一个旧数据库,该数据库提供该服务所需的所有信息:用户名/密码和私人信息查找。维护用户名/密码方法并避免数据库更改(例如存储用户的签名密钥)是首选。

【问题讨论】:

  • 如果您使用标准 https,只要您有某种身份验证和授权步骤开始每个对话,您就可以免受中间人攻击。您还可以在每个请求中发送一个安全令牌。
  • @faester,您能否发布有关 HTTPS 的答案,以便我接受?谢谢。

标签: web-services security soa


【解决方案1】:

如果您使用标准 https,只要您有某种身份验证和授权步骤开始每个对话,您就可以免受中间人攻击。您还可以在每个请求中发送一个安全令牌。

【讨论】:

    【解决方案2】:

    你很接近......

    您可能在这里混淆了两个概念,验证用户和保护(加密)数据。 无需详细说明安全协议的工作原理(https,SSL)。托管您的服务的服务器需要一个证书,就像您说的那样,服务器将拥有一个其他人都不知道的私钥和一个公钥任何人都可以知道... 现在您的客户端将使用服务器公钥加密数据(浏览器会处理这个),这将确保只有服务可以解密数据(使用私钥),因此数据是安全的......

    为了确保(来源完整性),服务需要使用(用户名和密码)对客户端进行身份验证

    简而言之,您需要为您的服务器购买并注册一个证书。客户必须对自己进行身份验证

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-15
      • 2021-03-19
      • 2019-02-14
      • 2020-11-20
      • 2012-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多