8

我想在 REST api 之上制作一个轻量级的 webapp,用户应该只进行一次身份验证,从那时起,所有针对 web api 的请求都有望通过以某种方式保持用户名和密码有效来完成。

我已经制作了一个工作原型,如果对 REST api 的第一个请求成功,我将用户名和密码存储在会话变量中,从那时起,每个请求都是使用从会话变量中获取的身份验证信息发出的。到目前为止,一切都很好。

通过这种方法,我意识到有权访问服务器的人将能够读取密码。PHP中是否有某种方法可以让我遵循我的方法并具有适当的安全性?

更新一些更多细节:

这里的预期目标是可视化从 API 检索的数据,基于使用不同的数据查询它,但不让用户每次尝试都输入他的用户名和密码。所以 API 是完全无状态的,但是带有 gui 的 web 应用程序应该是有状态的。

在这种情况下,我无法控制 Rest API,因此对它的每个请求都需要发送带有基本身份验证的 API 用户名和密码,没有其他方案,例如 API 密钥、会话令牌或类似的东西。这就是为什么只要用户会话持续,我就必须保留用户名和密码,并且我想知道将它们存储在会话变量中的方法是否可以被认为是安全的。

4

1 回答 1

1

只要您不将会话状态存储在 REST API 服务器上,仅存储在您的客户端 web 应用程序上,从架构的角度来看,这似乎很好。

如果您确实必须使用用户名和密码并且无法获得一次性令牌,您可以使用服务器端密钥对其进行加密,并在将它们发送到 API 时即时解密,这样即使有人可以劫持如果没有服务器端密钥,他们将无法获得用户名和密码,但是无论如何你应该更加小心泄露你的 php 会话。

PHP 会话安全

请按照该问题的答案中概述的步骤进行操作,但您应该对用户与 web 应用程序之间以及 web 应用程序与 REST API 之间的所有交互使用 HTTPS。

于 2013-11-10T22:27:24.807 回答