我希望在REST api之上创建一个轻量级的webapp,用户应该只对其进行一次身份验证,从那时起,所有针对web api的请求都可以通过以某种方式保存用户名和密码来完成。 / p>
我已经制作了一个工作原型,如果对REST api的第一个请求成功,那么我将用户名和密码存储在会话变量中请求来自会话变量的auth信息。到目前为止一切都很好。
通过这种方法,我意识到有权访问服务器的人将能够读取密码。在PHP中是否有某种方法可以使用适当的安全性来遵循我的方法?
更新更多详情:
此处的目标是基于使用不同的数据查询从API检索的数据的可视化,但不是让用户输入每次尝试的用户名和密码。所以API完全是无状态的,但带有gui的web应用程序应该是无状态的。
在这种情况下,我无法控制Rest API,因此每个请求都将始终要求使用基本身份验证发送API用户名和密码,没有其他方案,如API密钥,会话令牌或类似的东西。这就是为什么我必须在用户会话持续时保留用户名和密码,并且我想知道将它们存储在会话变量中的方法是否可以被认为是安全的。
答案 0 :(得分:1)
只要您不在REST API服务器上存储会话状态,只在您的客户端webapp上存储,从架构的角度来看似乎没问题。
如果你真的必须使用用户名和密码并且无法获得一次性令牌,你可以使用服务器端密钥加密它们,并在将它们发送到API时即时解密,所以即使有人可以劫持一个没有服务器端密钥但无法获取用户名和密码的会话,但无论如何你都应该更加小心地泄漏你的php会话。
请按照该问题的答案中列出的步骤进行操作,但您应在所有交互中使用HTTPS,在用户和Web应用之间以及在webapp和REST API之间使用HTTPS。