【问题标题】:how to improve Android client and PHP server security?如何提高 Android 客户端和 PHP 服务器的安全性?
【发布时间】:2017-10-03 12:10:30
【问题描述】:

我想使用 POST 在 PHP 服务器和 Android 客户端之间传输数据,如何提高安全性?例如,如何确保可信且成功的访问服务器 API 只能是我的 Android 客户端?

因为app是有Login机制的,所以我觉得应该在每一个post里面加上账号验证码(包括用户密码等等,可能会被MD5加密),那么每一个POST都有明确的来源,如果来源无效(没有验证码或错误),服务器拒绝服务。这可行吗?

【问题讨论】:

  • 使用 https 连接,发送带有编码的帖子数据,并在标头中使用身份验证令牌
  • 你可以实现 OAuth
  • 您永远无法 100% 确定请求来自实际应用。如果请求来自用户有权访问的客户端,则理论上用户可以始终检查应用程序如何发出请求并伪造它。
  • 欢迎来到 SO。 “如何...”? “例如...”?这对 SO 来说太宽泛了。请使用网络搜索引擎进行研究。在向 SO 发布更多内容之前,请阅读此内容:stackoverflow.com/help/asking
  • @MaciejJureczko 我再次发布了我的问题,并解释了我的具体情况。

标签: php android security server


【解决方案1】:

我建议首先设置一个RESTful 网络服务。这将允许您通过他们的方法过滤来自 Android 客户端的请求,例如只为某些端点处理 POST

如果您知道只有 Android 客户端会访问您的服务器,您还可以强制每个请求都必须发送“客户端”或“身份验证”令牌(只是 JSON 属性),然后您只需提供此令牌到 Android 客户端实现,并拒绝任何访问不包含令牌的服务器的尝试。

同样重要的是不要在 PHP 中直接访问诸如 $_POST 之类的超全局变量,而应使用 filter_input()

这只是一个建议,您可以做的还有很多。

【讨论】:

  • 设置 RESTful Web 服务并不比任何其他类型的 Web 服务更安全。关于客户端和身份验证令牌,有人可以轻松反编译应用程序并获取它们。然后他们可以从任何地方发出请求。
  • 我认为它绝对有助于构建客户端 - 服务器系统,并使其更容易扩展和添加安全性。我相信这确实有助于解决 OP 关于如何提高安全性的问题。
  • 正确构建应用程序并遵循标准当然总是有助于开发。我的观点是,RESTful Web 服务本身并不比任何其他标准更安全。无论如何,您将始终需要实际实施安全性。我认为这个问题本身就太宽泛了,因为要考虑的事情太多了。这也完全取决于应用的实际功能。
  • @MagnusEriksson 同意
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-07
  • 1970-01-01
  • 2012-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多