【问题标题】:API for mobile app security/auth用于移动应用安全/身份验证的 API
【发布时间】:2013-04-28 01:58:36
【问题描述】:

我有一个向移动应用提供内容的 API,并且目前没有将 API 用于其他产品的计划。我有两个主要问题:

  1. 如何防止有人嗅探 API 请求并发出自己的请求(这不应是公共 API)。
  2. 如果无法完全阻止 #1,那么如何限制/限制来自未经批准的消费者的请求?这里还有其他问题吗?

为每个请求使用身份验证令牌(作为 GET 参数传递)满足 #2(我可以随时撤销它)但是我不想在将来更新应用程序以使用不同的令牌。

此外,移动应用程序中没有用户身份验证,API 是用 PHP 编写的。

这方面的最佳做法是什么?

【问题讨论】:

    标签: api security mobile oauth


    【解决方案1】:

    这里有一些建议可以帮助您保持 API 的私密性。

    • 使用TLS 阻止随意的数据包嗅探。
    • 确保您的客户端验证服务器证书以防止MITM 攻击。
    • 加密或混淆客户端代码中的身份验证令牌,使其不会明显暴露在字符串转储之类的内容中。

    但最终,如果有人真的想访问您的 API,他们会 - 通过对您的客户端代码进行逆向工程,或 more complex data interception techniques。最好的办法就是阻止普通用户尝试访问。

    【讨论】:

      【解决方案2】:
      • 如何防止有人嗅探 API 请求并发出自己的请求(这不应是公共 API)。

      我会回应之前的答案,即您当然应该使用 TLS,以便加密线路上的流量以防止嗅探。但是我要补充一点,您还需要阻止“捕获-重播”攻击,尽管使用了 TLS,但攻击者可能会重新发送他们可能已经获得(例如从客户端日志)的先前消息。在这种情况下,如果您在请求中使用随机数(意思是“数字一次”)和/或时间戳,并带有 HMAC 签名,则可以检测并阻止重放的 API 请求。我在我的博客上写了一个这样的例子:http://www.soatothecloud.com/2011/02/securing-apis.html。例如,亚马逊的 API 就使用了这种方法。

      • 如果无法完全阻止 #1,那我该如何 限制/限制来自未经批准的消费者的请求?有没有其他 这里有问题吗?

      除了 HMAC 签名(如上)之外,您还可以考虑监控传入的 IP 地址范围、设备信息(例如指示设备类型的标头 - Android 与 iOS 等)以及可用于链接多个请求的其他因素到特定客户端,然后在 API 级别应用策略。

      完全披露我为 API 管理/API 网关供应商 (Axway) 工作,但上述信息应该是通用的。

      【讨论】:

        猜你喜欢
        • 2015-10-01
        • 1970-01-01
        • 2012-09-25
        • 2016-04-23
        • 2019-07-25
        • 2012-09-19
        • 2016-10-22
        • 2014-05-15
        • 2021-12-26
        相关资源
        最近更新 更多