【问题标题】:securing connection to php server保护与 php 服务器的连接
【发布时间】:2011-12-29 16:18:22
【问题描述】:

我有以下情况: Android 客户端通过 HTTP Post 与 PHP 服务器通信。 PHP 服务器正在与 mySQL 数据库通信,并将输出作为 JSON 发送到 Android 客户端。

现在我担心人们会嗅探流量、找出 URL 并在我的数据库中发布大量数据。 我不担心嗅探有效载荷。所以它不一定是加密的。

由于 HTTP 连接,我想到了 TLS/SSL。但我不确定在这种情况下首选的方法是什么。

【问题讨论】:

  • 这是网络应用程序级别的授权问题。
  • 是的,没错。不使用用户名/密码的首选方式是什么?

标签: php android security http


【解决方案1】:

您要做的是使用相互验证的 SSL,这样您的服务器将只接受来自您的应用的传入连接,而您的应用只会与您的服务器通信。

这是高级方法。创建一个自签名服务器 SSL 证书并部署在您的 Web 服务器上。为此,您可以使用 Android SDK 中包含的 keytool。然后创建一个自签名客户端并将其部署在您的应用程序中作为资源包含在您的应用程序中的自定义密钥库中(keytool 也会生成它)。将服务器配置为要求客户端 SSL 身份验证并仅接受您生成的客户端证书。将客户端配置为使用该客户端证书来标识自己,并且只接受您在服务器上安装的一个服务器端证书。

如果您的应用程序以外的某人/某物尝试连接到您的服务器,则不会创建 SSL 连接,因为服务器将拒绝未提供您应用程序中包含的客户端证书的传入 SSL 连接。

一步一步的回答比这里保证的要长得多。我建议分阶段执行此操作,因为网络上有关于如何在服务器端和客户端处理 Android 中的自签名 SSL 证书的资源。我的书中还有一个完整的演练,Application Security for the Android Platform,由 O'Reilly 出版。

【讨论】:

    【解决方案2】:

    SSL 对您没有帮助,因为流量可以在数据到达网络之前被嗅探,人们仍然能够找出您的 API 调用并用废话填充数据库。

    您可以使用访问令牌和用户名/密码要求“保护”服务。但同样,它们不会阻止恶意用户用坏数据淹没您的系统。但是,它可以让您追踪哪些用户正在这样做,因为他们必须使用某种唯一的访问令牌才能访问您的系统。

    【讨论】:

    • 你是对的。我不想使用用户名/密码登录。所以我不担心使用该应用程序的人正在用垃圾填充我的数据库。我担心来自 PC 的人会简单地淹没它。
    猜你喜欢
    • 2015-08-18
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 2011-05-07
    • 2017-10-21
    相关资源
    最近更新 更多