我可以在PHP会话变量中安全地存储用户名和密码吗?

我可以在PHP会话变量中安全地存储用户名和密码吗?,php,security,rest,Php,Security,Rest,我想在restapi之上创建一个轻量级webapp,用户只需验证一次,从那时起,所有针对webapi的请求都希望通过某种方式保持用户名和密码的活动来完成 我已经制作了一个工作原型,如果对REST api的第一个请求成功,我将用户名和密码存储在会话变量中,从那时起,每个请求都使用从会话变量获得的身份验证信息进行。到目前为止还不错 通过这种方法,我意识到有权访问服务器的人能够读取密码。在PHP中是否有某种方法可以让我遵循我的方法并具有适当的安全性 更新更多详细信息: 这里的目标是基于使用不同的数据查

我想在restapi之上创建一个轻量级webapp,用户只需验证一次,从那时起,所有针对webapi的请求都希望通过某种方式保持用户名和密码的活动来完成

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

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

更新更多详细信息:

这里的目标是基于使用不同的数据查询API,对从API检索到的数据进行可视化,但不让用户为每次尝试输入用户名和密码。因此API是完全无状态的,但是带有gui的web应用程序应该是有状态的


在本例中,我无法控制Rest API,因此每次请求Rest API时都需要发送API用户名和密码以及基本身份验证,没有其他方案,例如API密钥、会话令牌或类似的方案。这就是为什么我必须在用户会话持续时间内保留用户名和密码的原因,我想知道在会话变量中存储用户名和密码的方法是否安全。

只要您不在REST API服务器上存储会话状态,只在您的客户端webapp上,从建筑学的角度来看,这似乎很好

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


按照问题答案中概述的步骤进行操作,除了用户和webapp之间以及webapp和restapi之间的所有交互都应该使用HTTPS之外。

这不是违反REST原则吗?这有点不清楚。你能更详细地说明在这种情况下客户是谁吗?您如何登录和查询API?您将在哪里存储用户名和密码?我希望从我最初的问题中可以清楚地看到,我正在使用保存在PHP$\u会话变量中的用户名和密码对REST Api执行HTTP请求,以便我的用户只需输入一次,但是我已经更新了更多的信息,你的问题还不清楚。当每个请求都包含用户名和密码时,为什么必须在会话中存储用户名和密码?因为我希望用户只需要使用他们的api用户名和密码登录我的webapp一次。所以我不应该/可以做任何事情,比如应用加密、加强服务器/PHP设置等等?谢谢,这篇文章很棒。如果没有进一步的答案,我明天会给你绿色的此外,我发现本文提供了一种简单的方法来混淆会话:它是否与您正在思考的内容类似?这是一个想法,只要您没有将密钥存储在会话本身中。但是,我不认为您需要对整个会话数据进行加密。最后一件事:加密会话的主要价值在于,如果它是一个共享系统,那么其他用户可以在主机上的共享存储中看到它们。然而,如果有人获得了主机的root访问权,那么他们可能仍然能够获得密钥并解密会话?没错。虽然任何具有会话id的人都可能获得会话,但他们需要访问服务器才能获得解密该会话的密钥。