【问题标题】:How secure is it to call "secret" URLs in an iOS app?在 iOS 应用程序中调用“秘密”URL 有多安全?
【发布时间】:2011-12-08 14:07:38
【问题描述】:

我们想在我们的应用程序中使用一个显然需要调用 URL 的网络服务。它不是 HTTPS,只是普通的旧 HTTP,使用 NSURLConnection。

问题是:这个网络服务非常昂贵,每千次调用都会花费我们真金白银。令人担心的是,有人可能会找出我们调用的 URL,然后滥用它,从而导致成本爆炸式增长。我们无法跟踪对该网络服务的调用是否合法。

我们计算的依据是我们销售的应用数量,乘以该应用的平均每位用户使用频率的假设。我们有一些很好的统计数据作为我们假设的基础。

是否有已知方法可以确定应用在 Internet 上调用哪个 URL 来检索信息?

【问题讨论】:

  • 您所做的事情根本上是不安全的。您将无法向攻击者隐藏此信息。这只是“通过默默无闻的(不)安全”。

标签: iphone ios ipad security networking


【解决方案1】:

您可以在手机连接 WiFi 时轻松使用网络嗅探器来找出这些信息。听起来,在 URL 中使用带有某种安全令牌的 SSL 非常重要。

如果这不是一个选项,也许您可​​以提供自己的使用 SSL 和安全令牌的代理服务?代理还授予限制请求和阻止已知恶意用户的能力。节流对每个用户在给定时间间隔内可能产生的费用设置了上限。代理的另一个好处是它允许收集统计数据并衡量不同用户产生的成本,从而促进恶意用户检测和业务规划。如果代理背后的服务是无状态的,代理还可以通过添加一个缓存来消除大量昂贵的调用,从而为您节省一些钱。

【讨论】:

  • +1 请注意,如果您的程序盲目信任证书,SSL 仍然可以被像 Charles 这样的代理嗅探。它需要检查证书是否由 签名,而不仅仅是“某个受信任的签名者”。此外,仍然可以对您的程序进行逆向工程以确定有效负载,但经过验证的 SSL 代理将大大提高 iOS 上的标准,留下大多数积极主动的攻击者,而不是随意的攻击者。
  • 您对这些观点是正确的。进一步提高系统安全性的一种方法是同时使用 SSL 和安全令牌,并使令牌源自应用程序外部的因素,例如只有授权用户知道的密码(应考虑适当的安全性与可用性平衡) .请注意,用于派生令牌的函数必须是单向的。代理通过允许您限制或阻止请求来授予额外的安全性,从而为恶意用户在给定时间间隔内可能对系统所有者造成的费用设置上限。
  • 我花了一些时间才明白你的意思,但我同意了。如果您可以将“请让我与您交谈”令牌与特定于用户的信息(如帐户)联系起来,那么您可以强烈限制滥用。如果不能,则可以通过基于 IP 的限制来微弱地限制滥用。
  • -1 ssl 不能用于隐藏 url。攻击者仍然可以通过反编译二进制文件或使用调试器来获取此信息。
  • 基于用户的令牌限制是一种更强大的保护,仅靠模糊性不足以抵御专门的攻击者。但这并不意味着所有方法都同样可攻击。将此流量传输到 SSL 代理为 OP 和用户(保护他们的流量)提供了显着的好处,并为未来的改进奠定了基础。它不应该被打折,因为它不能阻止所有攻击。
【解决方案2】:

如果 Web 服务未加密,则使用代理拦截手机发出的 Web 请求将很简单。如果昂贵的 Web 服务至少不提供某种形式的基本身份验证,我会认真考虑将其 URL 包含在公共应用程序中。

【讨论】:

  • 你能解释一下你所说的“琐碎”和“代理”是什么意思吗?那是一个 WiFi 路由器提供了一个协议吗? Web 服务受 URL 请求中的用户标识“保护”。这样他们就确定了他们的“客户”。当然,任何人都可以复制该网址并代表我们直接调用它。
  • 当然。根本没有必要到处乱搞路由器。每当我调试我正在开发的网络应用程序时,我都会启动我信任的 [charlesproxy.com]Charles 软件代理,并将我 iphone 的 WiFi 设置为使用我的桌面地址作为代理。有了这个,我可以监控手机发送和接收的所有http请求。我强烈建议您使用此类软件自己进行测试——您将能够看到其他人也可以从您的网络请求中收集到什么信息。
【解决方案3】:

使用纯 URL 是让脚本小子让您破产的可靠方法。如果您无法跟踪对昂贵 Web 服务的调用是否合法,请设置您自己的 Web 服务,该 Web 服务位于真正的 Web 服务前面,以确保您自己的 Web 服务可以在转发之前验证调用的合法性请求真正的网络服务。

【讨论】:

    【解决方案4】:

    是的,有很多方法可以做到这一点。例如,将 iPhone 连接到 wifi 网络,其中路由器具有透明代理。检查代理的日志。您将看到所有 URL。取决于您的用户的决心,但这很容易。

    【讨论】:

      【解决方案5】:

      忽略越狱他们的设备的人可能会查看您的应用程序这一事实,我相信如果有人使用应用程序通过 WiFi 热点嗅探流量,则可以像任何其他设备(笔记本电脑、平板电脑等)一样检查流量如WireShark。但是,我怀疑在蜂窝 3G 网络上是否存在这种风险。

      【讨论】:

        【解决方案6】:

        好问题。

        正如许多人所说,是的,很容易找出您的应用请求的网址

        关于 HTTPS 的注意事项: 但是由于您使用的是 HTTPS,所以没关系,因为通过 HTTPS,域将被 IP 地址所掩盖,并且人们看不到 URL 查询字符串参数。例如,如果你的 URL 是https://somewebsite.com?uid=mylogin&pass=mypass,他们肯定看不到“uid=mylogin&pass=mypass”,他们可能只能看到 IP 地址,看不到域名本身。 (见https://serverfault.com/questions/186445/can-an-attacker-sniff-data-in-a-url-over-https

        旁注: 可以安全地假设 Apple 在审核您的应用程序时执行某种 HTTP 请求诊断 - 这是有道理的,因为尝试从多个角度弄清楚您的应用程序的功能符合他们的最大利益。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-03-19
          • 1970-01-01
          • 1970-01-01
          • 2020-06-28
          • 1970-01-01
          • 2020-11-20
          • 2023-03-25
          • 2013-08-04
          相关资源
          最近更新 更多