【问题标题】:How can I connect to my MySQL database backend through Android without exposing it to the public?如何通过 Android 连接到我的 MySQL 数据库后端而不向公众公开?
【发布时间】:2017-05-06 11:43:53
【问题描述】:

我为 Android 制作了一个应用程序,它使用 Retrofit HTTP API 来调用查询数据库的 PHP 脚本。

应用程序 -> 改造调用 -> PHP -> 数据库

PHP 和数据库都托管在同一个 Amazon EC2 实例上。

我希望我的应用可以部署给许多用户,但我不知道如何将我的后端保密。

为了让应用程序与数据库交互,它必须使用 PHP,并且由于用户的 IP 地址会有所不同,我必须保持 PHP 代码的主机 IP 地址公开,以便所有用户都可以提交/下载数据。

问题在于,这让我的后端对任何想要嗅探 IP 地址的人开放。我该如何解决这个问题? PHP/MySQL 对于 Android 来说是一个糟糕的选择,还是我只是选择了错误的平台?

【问题讨论】:

  • 您通常不会让移动应用程序直接与数据库交互。相反,您的应用程序将与托管在某个服务器或服务器上的应用程序通信。然后,该应用程序将与数据库对话。您可以直接使用 firebase 之类的服务,但您对将哪些数据输入数据库的控制有限。
  • 您同意用户需要用户名和密码吗?

标签: php android mysql amazon-web-services amazon-ec2


【解决方案1】:

加密是不可能的吗?您可以在 android 和 PHP 之间加密/解密字符串或数据。

我使用的一些代码可以在这里找到:https://stackoverflow.com/a/20929131/7199177

【讨论】:

    【解决方案2】:

    最好的解决方案是为您的应用创建一个 API 后端,该后端反过来与您的应用服务器和数据库通信。这是创建具有云后端的移动应用程序的标准做法

    AWS API Gateway 非常适合它。这是非常便宜、响应迅速且安全的服务。

    【讨论】:

      【解决方案3】:

      您可能已经使用 PHP 创建了 API 您可以使用 PHP 开发以下机制来保护您的 API:

      1. 列出应该公开的 API,例如登录、注册,以便任何人都可以访问它。
      2. 所有其他 APP 应仅在经过一些身份验证后才能访问。
      3. 您的 API 应该与位于私有子网中的数据库服务器通信。

      其他选项:

      1. 将 API-Gateway 与 Lambda 和您的数据库服务器一起使用:
      2. 为减少 API 网关的使用,您可以直接在 lambda 中编写代码,并在应用程序中使用 aws-sdk 来调用 lambda。在后端使用您的数据库服务器。

      【讨论】:

        猜你喜欢
        • 2021-02-11
        • 1970-01-01
        • 1970-01-01
        • 2021-08-29
        • 1970-01-01
        • 2023-04-02
        • 2021-10-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多