【问题标题】:Android - username and password in source code [duplicate]Android - 源代码中的用户名和密码[重复]
【发布时间】:2015-03-10 16:40:22
【问题描述】:

我目前正在开发一个简单的应用程序,它使用来自远程服务器的 JSON 解析数据。服务器端,有一个 php 脚本连接到数据库并选择必要的数据。

我的问题是如何保存 php 脚本。我的方法是只为每个应用程序创建一个用户名和一个密码来进行身份验证。应用用户不会知道登录过程,并且可以安全地访问 php 脚本。

这种方法存在一些问题,因为我无法将数据(加密)存储在数据库中,因为用户可以删除它。 SharedPreferences 也不是选项,因为我必须对凭据进行硬编码。这就是我现在的重点:如何存储硬编码的凭据?出于我的直觉,我会说这是一个坏主意。但是如何处理这个问题呢?

【问题讨论】:

  • 嗯,在源代码中保存密码和用户名是永远不会保存的。反编译 Java 应用程序非常简单。
  • 您应该对每个用户进行身份验证。
  • 使用 deviceId 作为凭据怎么样?
  • 我必须实现用户创建活动来验证每个用户或使用 deviceId?我认为用户会避免为未知的应用/服务创建帐户。

标签: java php android security scripting


【解决方案1】:

这是一个非常糟糕的主意。为什么要将 MySQL 数据库的凭据存储在安装了您的应用程序的每台设备上?我对您使用此身份验证的目标感到困惑,因为在我看来,您似乎只想要一种通过 PHP 登录 MySQL 的方式,所以我错过了将 MySQL 密码存储在客户端设备上的原因。对我来说,听起来密码应该保留在 PHP 中的服务器端。

如果您出于其他原因想在 Android 设备上存储密码,请考虑使用 Android 帐户管理器。

【讨论】:

  • 不,我不想在设备上存储 MySQL 密码。我只是想防止未经授权的脚本执行。我创建了一个带有随机用户名和密码的表,并使用它们在 php 脚本中进行身份验证。
  • 好的,我明白你现在想做什么。提醒一下,这仍然是不安全的(无论设备上的存储如何),因为它很容易被数据包从 HTTP 请求中嗅探出密码。至少,您应该确保使用 HTTPS,但通过请求传递密码也是一个坏主意,因为这是使用 OAUTH 令牌的原因。如果您想继续您的计划以保持简单,那么我仍然建议您查看 Android 帐户管理器以安全地存储凭据。
  • 我使用 HTTPS 连接到服务器,我想让事情变得简单。你能告诉我更多关于为什么即使使用加密连接 (HTTPS) 也不安全的问题?感谢您对 OAuth 的提示,我需要熟悉它..
  • HTTPS 仍然容易受到Man-in-the-middle Attack 和其他潜在漏洞的攻击。使用 HTTPS 会更安全,但传递这样的密码通常是不好的做法。 OAuth 的好处是令牌会过期,因此如果令牌被泄露,它就不能像密码一样永久使用。
猜你喜欢
  • 1970-01-01
  • 2014-02-21
  • 1970-01-01
  • 1970-01-01
  • 2012-01-01
  • 2013-05-14
  • 2010-12-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多