【发布时间】:2019-06-09 09:46:10
【问题描述】:
对于(几乎)每个操作,某些 Android APP 都会对位于服务器上的 php 脚本执行查询,以发送/接收数据。对于每个此类查询,APP 用户的用户名/密码都会传输到脚本以进行授权。
但是,该脚本使用 php 的 password_hash() 函数在每次访问期间验证用户凭据。由于password_hash()很慢,这会导致糟糕的用户体验,因为APP需要很长时间才能将请求的数据通过脚本处理/返回给APP。
我想知道如何处理这个问题。
我打算使用的一种方法是脚本除了发送用户名/密码之外还发送一个 sessionID。该脚本反过来仅每 X 分钟和/或每 Y 个请求运行一次 password_hash() 函数,同时更新 sessionID(如果用户凭据有效)。在其他访问期间,仅检查 sessionID 是否有效。 sessionID 以纯文本形式保存在服务器上,因此检查速度很快。
由于用户凭据和 sessionID 都可能被第三方猜测,因此在避免不允许的访问方面似乎没有太大区别。
我看到的建议方法的唯一缺点可能是 sessionID 以纯文本形式存储,以便第三方可以读取它(它以某种方式获得了对数据库的访问权限)。但是,可以通过适当调整 X 和 Y 的值来降低这种风险,从而调整 sessionID 的有效时间段。
这种方法有什么替代方案或缺点吗?
【问题讨论】:
-
您需要一个用于存储用户数据的数据库...
-
将会话 ID 存储到文本文件中并不是一个好主意...
标签: php authorization password-hash