【问题标题】:How secure is it to connect to a MySQL database from an Android app?从 Android 应用程序连接到 MySQL 数据库的安全性如何?
【发布时间】:2015-03-23 18:27:27
【问题描述】:

我正在开发一个 Android 应用程序,该应用程序处理一些稍微敏感的信息(姓名、用户名、密码、徽章编号等)...就代码工作而言,我知道如何使用 PHP 连接到 MySQL 数据库并通过 JSON 从中提取信息。我只是担心这样做的安全性。我知道目前有很多 Android 和 iPhone 应用程序实现了登录系统,但我很好奇这些登录的安全性如何。

有谁知道我在哪里可以找到一些关于通过 Android 应用程序为我的登录系统使用 PHP 和 MySQL 创建与数据库的安全连接的信息?我知道没有什么是完全无法穿透的,但我想确保我的应用程序的安全性尽可能严格。

和往常一样,我还在习惯 StackOverflow,所以如果我不清楚或者这个问题已经回答了,请告诉我!

【问题讨论】:

    标签: php android mysql security


    【解决方案1】:

    如果您使用自己的身份验证代码,很难说它有多安全。人们经常会犯这种可怕的错误,代码会产生相反的效果:它没有保护网站,而是暴露了几个严重的漏洞,可以用来劫持它并下载任意数据。

    Laravel 这样的development framework 带有一个内置的authentication system。如果该代码中存在漏洞并由社区审查,通常会发布一条建议,以便您了解并在必要时进行修补。

    如果您遵循最佳做法,应该没问题。如果您想让事情变得简单和安全,那么通过 PHP 或任何其他语言的 JSON 是一个不错的选择。

    【讨论】:

      【解决方案2】:

      获得 100% 确实很难,但您可以使用一些技巧,例如

      1. SSL
      2. 每个用户的会话
      3. 类似通过短信发送的验证码
      4. 通过 API 调用等发送之前的加密数据

      【讨论】:

        【解决方案3】:

        从应用程序连接到远程数据库非常不安全。可以把它想象成从浏览器中的 javascript 连接到数据库,因为它具有相同级别的安全性。

        还有一点很重要,

        稍微敏感的信息(姓名、用户名、密码、徽章编号等)。

        密码不是很敏感,而是非常敏感。我不确定您是否暗示密码以可逆格式存储,但they should be hashed

        无论如何,对于您的主要问题,您需要创建一个提供有限访问权限的 API,而不是直接从客户端设备连接到数据库。您可以使用一些服务器端编程以 Web 服务的形式编写它。从那里,您只需使用基于当前登录用户的 API 密钥/角色。这是设计此系统的安全/正确方法。您不想将数据库凭据放在应用程序中,除非它们用于手机上的本地数据库。

        【讨论】:

          【解决方案4】:

          为了扩展 Gray 所说的,您可以通过 URL 传递 JSON 数据,该 URL 将发送到为您的数据库提供前端的 Web 服务。还有几个其他示例that you can find here to start. 正如所指出的,直接访问数据库是一个非常糟糕的主意。即使有前端,您也需要确保在前端进行大量数据检查。不要传递直接的 SQL 查询!他们太容易破解了。 SQL 注入仍然是最成功的攻击技术之一。

          您可能会考虑将移动后端作为服务提供商,例如 Kii、Kumulos、Kinvey、Kony(不知道为什么它们都以 K... 开头)或 built.io。它们会花费你的钱,但会让你头疼。

          【讨论】:

            猜你喜欢
            • 2011-07-12
            • 2018-10-23
            • 1970-01-01
            • 2016-07-14
            • 2011-07-28
            • 2015-03-16
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多