android - 我将如何创建登录名

标签 android mysql authentication

设置: 我有一个 android 应用程序,到目前为止可以通过将值插入远程 mysql 数据库来注册用户。我现在正在尝试实现登录。

我想我可以在数据库中的用户表中添加一个“已登录”列,该列将存储用户是否已登录。然后我会有一个触发器,在特定时间后将用户注销时间已经过去了。

该应用程序的用途是根据用户是否有权访问某个文件来检索文件。为此,我在用户表中有一个“访问”列,指定用户对某个文件的访问权限。我在想,当用户单击列表中的一个项目时,应用程序将发送他们的登录信息,服务器将确定信息是否正确,然后检查他们是否有权访问指定的文件,如果信息正确则发回文件是正确的。

但我遇到的问题是,检查注册信息需要大约 2 秒(由于连接到套接字并通过网络发送字符串),如果我尝试检查登录名和访问 ID,它会花费更长的时间。

我觉得自己好像在重新发明轮子,但在这件事上我找不到任何可行的资源。批评?有什么建议吗?

(我不介意做一个完整的重新设计,我只需要知道从哪里开始)

最佳答案

永远不要将客户端连接到数据库服务器。没有办法拦截黑客攻击,因为权限非常基本(SELECT、UPDATE 等,它们会忽略查询):

UPDATE users SET name='%s' WHERE userID=%i // where %i will be defined as the real userID

上面应该是更新用户帐户信息的有效查询,但是,黑客可以轻松拦截它并将其更改为:

UPDATE users SET name='%s' WHERE userID=15 // ... or any other variable

相反,您应该创建一个基于 Web 的 API,它将验证每个查询,或者更好的是,只支持特定的 API 命令:

account/update.json?name=%s

关于android - 我将如何创建登录名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6819684/

相关文章:

mysql - 如何在 MySQL 中使用从 SELECT IF 返回的 bool 值

delphi - 自动登录(网络浏览器)

javascript - 使用 Passport 在 Express 的 POST 中传递参数

java - 如何在android中使用jsoup自动登录网页?

当计算多列中的出现次数时,mysql错误 "Operand should contain 1 column(s)"

PHP:查询电子邮件是否唯一,如果是,则查询以将记录添加到数据库

php - 将 PHP 重定向到登录页面,而不是强制登录

android - 应用程序安装期间的未知错误代码 : "-504"

java - 多文件上传只上传最后一个文件而不上传其余文件

java - LibGdx 双击