【问题标题】:Android - How to do MySQL db transactions using authentication?Android - 如何使用身份验证进行 MySQL 数据库事务?
【发布时间】:2016-03-11 21:49:57
【问题描述】:

对于不需要任何用户名或密码的数据库,我通常通过访问 PHP 脚本从我的 Android 应用程序中的 MySQL 数据库中获取数据。要将数据发送到数据库,我将 GET 或 POST 变量发送到 PHP 脚本。

但如果我需要访问通常需要网络用户首先登录的数据库,我将如何与数据库交互?在我的 Android 应用中,用户将指定他的登录名和密码。

PHP 会话?

在通过 HTTP 请求访问某些 Web 服务器上的 PHP 脚本时,Android 应用程序能否以某种方式使用 PHP 会话?

将登录名/密码作为 GET/POST 参数发送?

在我的应用程序中,当访问我的 PHP 脚本时,是否每次我想访问受限数据时都将登录名和密码作为 GET/POST 参数发送?每次都以 GET/POST 的形式发送登录名/密码似乎有点粗略。

身份验证令牌?

或者我是否会发送一次登录名/密码进行身份验证,然后检索某种令牌,以便在后续调用 PHP 脚本时发送该令牌?我会设想它是这样工作的:

  1. 用户将登录信息发送到 PHP 脚本
  2. 认证成功后,生成随机token并放入user表中。
  3. 令牌被发送回应用程序
  4. 随后的数据库调用包括令牌作为 GET/POST 参数。
  5. PHP 脚本使用令牌对用户进行身份验证并获取仅限该用户使用的数据库信息。

关于这种方法的几点说明:

  1. 应用程序何时将用户注销?当他退出应用程序时?当他切换到不同的应用程序时? Activity 什么时候销毁?
  2. 如果用户没有手动退出应用程序(这通常会从user 表中清除令牌值),那么令牌值何时被清除?
  3. 如果用户关闭手机并失去与数据库的连接会怎样?数据库是否应该在一段时间后自动清除user表中的token值,让随机的幸运者猜不到token?
  4. 令牌是否也应该设置某种last_accessed_at 时间戳并在一段时间后拒绝使用令牌进行身份验证?

那里有几十个使用 Android 应用程序访问 MySQL Web 数据库的教程,但我找不到任何讨论使用凭据和/或身份验证方案的教程。

【问题讨论】:

    标签: java php android mysql authentication


    【解决方案1】:

    请记住,会话通常使用 cookie 进行跟踪。您所要做的就是保存该 cookie 并在从您的 android 应用发出请求时在您的标头中使用它,然后您就有了一个工作会话。

    还要考虑进行特殊的握手或使用某种特殊的安全措施。 永远不要相信输入!

    【讨论】:

    • 您是否有任何链接显示在执行 httppost 或 httpget 请求后如何存储 cookie?还有如何在后续请求的标头中发送它的代码?
    • 恐怕不行。我不知道 android 数据库是如何工作的,但通常您可以使用 fopen 函数或 cURL 获取或发送标头。
    猜你喜欢
    • 2021-06-12
    • 1970-01-01
    • 2018-02-13
    • 2011-01-12
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    • 1970-01-01
    • 2016-04-05
    相关资源
    最近更新 更多