【问题标题】:Android secure JSON responseAndroid 安全 JSON 响应
【发布时间】:2013-10-30 21:12:01
【问题描述】:

我正在开发一个执行 POST 请求并从服务器 (JSON) 获取 JSON 响应的应用程序。问题是,在服务器端,我不希望另一个应用程序消耗响应,只有我的应用程序(就像你的 facebook 帐户一样,你对服务器执行一些查询,它会向你的 facebook 应用程序返回一个 json,所以你可以看到结果)。不同的是,用户无需创建帐户即可使用该应用程序,任何人都可以使用它。 保护来自服务器的响应的最佳方法是什么?

我在服务器端使用 php(连同 mysql),响应作为 echo json_encode($response)

希望你们理解并提前感谢!

【问题讨论】:

  • 您是否正在考虑一些简单的事情,例如将密钥从您的应用程序传递到服务,然后仅在密钥正确时返回 json?
  • 感谢您的快速回复。你的意思是,像 oAuth 之类的东西?
  • 客户端可以用密钥加密并发送到服务器。服务器将使用密钥解密并使用相同的密钥加密响应。只有客户端知道如何解密。
  • 似乎是一个不错的方法,在 android 上执行此操作的最佳方法是什么?我的意思是,我应该使用哪些库(api 的?)?任何教程或启发都会很棒!

标签: android json http-post android-volley


【解决方案1】:

以下是一些帮助您的应用向服务器识别自身的方法:

  1. 使用 SSL 进行所有通信,以防止中间人攻击。
  2. 拥有一个可以识别你的应用的秘钥,并且在与服务器通信时,对其进行哈希处理,你可以添加一个时间戳。在服务器端移除盐,解密,检查时间戳以防止重复攻击,并检查应用标识符。
  3. 您可以让服务器发送质询,客户端必须使用秘密哈希函数对质询进行哈希处理,以恢复通信。

还有很多方法可以保护您的服务器,这些只是其中的一小部分。

【讨论】:

  • 首先感谢您的回复!使用 SSL 是可以的,但是如何在 android 上完成第 2 项和第 3 项?我的意思是,我应该使用哪些库或 API?我想知道是否有一些不错的教程或类似的东西让我开始!非常感谢!
  • 您可以选择使用哪种网络基础设施(我个人使用 Google Volley,但有很多选择),然后您必须创建自定义方法来解析您发送/接收的 HTTP 请求/响应。我不知道具体的教程,但我会留意。
  • 我开发了一些自定义请求,如果您需要任何帮助,请创建一个新主题并告诉我!
【解决方案2】:

您可能需要一种用户帐户方法。您可以在请求中嵌入一个密钥,该请求针对存储密钥的已批准密钥表进行验证。快速而肮脏,但可能的解决方案。

【讨论】:

  • 很抱歉,我的应用程序就像谷歌地图一样工作,从 B 查询位置 A,因此用户帐户对于良好的用户体验毫无意义!这就是为什么在我的情况下你的方法不会那么好。无论如何,谢谢你的回复!
猜你喜欢
  • 2014-11-26
  • 2016-06-09
  • 2015-03-18
  • 1970-01-01
  • 1970-01-01
  • 2015-04-27
  • 2020-02-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多