设置: 我有一个 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/