从Android应用程序连接到MySQL数据库的安全性如何


How secure is it to connect to a MySQL database from an Android app?

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

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

和往常一样,我仍然习惯于StackOverflow,所以如果我不清楚或者这个问题已经得到回答,请告诉我!

如果你正在滚动自己的身份验证代码,很难说它有多安全。通常人们会犯下严重的错误,而代码会产生相反的效果:它非但没有保护网站的安全,反而暴露出几个严重的漏洞,这些漏洞可以用来劫持网站并下载任意数据。

像Laravel这样的开发框架内置了身份验证系统。如果社区审查了该代码中的漏洞,通常会发布一条公告,让你知道并可以在必要时进行修补。

如果你遵循最佳实践,你应该没事。如果您想保持简单和安全,那么通过PHP或任何其他语言的JSON是一种很好的方法。

要获得100%真的很难,但你可以使用一些技术,比如

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

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

重要的一点是,

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

密码不是轻微敏感的,而是极度敏感的。我不确定你是否暗示密码是以可逆格式存储的,但它们应该被散列。

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

要扩展Gray所说的内容,您可以通过将JSON数据发送到为数据库提供前端的web服务的URL来传递JSON数据。你可以在这里找到其他几个例子来开始。正如所指出的,直接访问数据库是一个非常糟糕的主意。即使使用前端,您也需要确保在前端进行大量数据检查。不要直接传递SQL查询!它们太容易破解了。SQL注入仍然是最成功的攻击技术之一。

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