【问题标题】:How to be sure that server calls are coming from my app?如何确保服务器调用来自我的应用程序?
【发布时间】:2020-06-19 12:15:50
【问题描述】:

我一直在为 Android 和 iOS 开发一款游戏。它使用 LAMP 服务器后端。

有人告诉我,一旦我构建了我的游戏,从 .apk 中提取信息是多么容易。我试了一下,果然可以在那里找到我的网络调用函数和服务器密码。

我确保只有我的应用程序可以调用服务器的方法是通过传递密码的 SSL 使用 HTTP POST。如果密码与服务器的密码匹配,则呼叫将获得批准。之后服务器检查实际用户的 ID 和密码并获取他们的数据等。

游戏首次启动时,服务器会为玩家创建个人资料。我原以为这是安全的,但现在我知道任何人都可以提取我的 .apk 并重新打包它,然后将我的服务器用作后端,因为他们拥有密钥。

究竟如何才能保护我的服务器免受此类事情的影响?我如何确定只有我的应用才能访问我的服务器?

【问题讨论】:

  • 这能回答你的问题吗? Restrict API requests to only my own mobile app
  • @BömachtBlau 它似乎确实描述了 IlyaGulya 建议的相同 SafetyNet Attestation API,但我没有看到任何适用于 iOS 的内容。
  • 请注意,没有任何解决方案可以阻止攻击者向您的 api 发送有效请求,这在技术上是不可能的。我认为您误解了证明 api 提供了什么,更重要的是,它没有提供什么。例如,它不会阻止人们发送比您的游戏更高的分数。

标签: php android ios security server


【解决方案1】:

您可以使用 SafetyNet attestation API 在服务器端检查应用程序包名称:

https://developer.android.com/training/safetynet/attestation

  1. 按照教程实现所有内容
  2. 在 Google 响应后,在服务器端检查应用程序的包名称是否与您的匹配。

【讨论】:

猜你喜欢
  • 2021-04-14
  • 1970-01-01
  • 1970-01-01
  • 2010-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-26
  • 1970-01-01
相关资源
最近更新 更多