【问题标题】:How do I secure a .NET Web Service for use by an iPhone application?如何保护 .NET Web 服务以供 iPhone 应用程序使用?
【发布时间】:2010-04-16 09:23:09
【问题描述】:

我有一个用 .NET 编写的 Web 服务,它为 iPhone 应用程序提供数据。它还将允许应用程序进行“预订”。

目前它都是公司网络内部的,但显然当 iPhone 应用程序发布时,我需要确保 Web 服务在外部可用。

我将如何保护 Web 服务?

我正在研究两个方面:

  • 访问网络服务的身份验证
  • 保护正在传输的数据

我并不担心数据来回传递,因为无论如何它都可以在应用程序中查看(这将是免费的)。对我而言,关键问题是阻止用户访问 Web 服务并自行进行预订。

目前我正在考虑对来回传递的 XML 数据中的任何字符串进行加密,这样只有客户端才能有效地使用 Web 服务,从而避免身份验证的需要并为数据提供保护。这是我见过的唯一型号,但我认为 iPhone 甚至网络服务的开销都会导致用户体验不佳。

【问题讨论】:

    标签: .net iphone web-services security


    【解决方案1】:

    只需使用 https 进行 Web 服务调用。然后,您可以使用您想要的任何身份验证,并且可能会收到一个令牌,该令牌将传递给后续的 Web 服务调用。然后,您的身份验证详细信息和您的数据将受到保护。会有一些开销,但应该不会很大。

    【讨论】:

    • 嗨,s1mm0t,我想我们将尝试使用 https 来加密传输中的数据。所以你得到一个upvote谢谢。至于身份验证,我不知道自己想要什么,这就是我寻求想法的原因,所以为答案欢呼,但我接受了 dwery 的建议,因为它为我指明了一条道路。
    【解决方案2】:

    https 是一个简单的答案,但你不应该只为服务器提供自己的 证书,但给每个移动设备一个。这允许相互身份验证。

    如果您不能这样做,您可以使用 AES 对来自 iphone 的消息进行签名 到服务器,使用只有服务器和 iPhone 知道的共享密钥,但是 从未明文传输:

    签名 = AES(数据 + iphone udid + 共享密钥) (或类似的东西)

    您应该选择一种分发秘密的方式 这允许您验证另一部分。

    【讨论】:

    • 感谢 dwery,除了按原样使用 UDID 来计算每小时的预订数之外,我没有考虑过相互身份验证。我将致力于创建签名并使用 AES 和 https。如果我想出一个解决方案,我不会太尴尬,我会把它发回这里作为答案,干杯
    【解决方案3】:

    我更喜欢加密(Base64/AES)+ HTTPS。 oData,oAuth 认证也可以使用。

    【讨论】:

      猜你喜欢
      • 2011-11-27
      • 2018-09-19
      • 2012-07-03
      • 1970-01-01
      • 2010-12-02
      • 1970-01-01
      • 1970-01-01
      • 2020-12-12
      • 2021-04-14
      相关资源
      最近更新 更多