【发布时间】:2013-11-10 22:16:12
【问题描述】:
我想在 REST api 之上制作一个轻量级 webapp,用户应该只验证一次,从那时起,所有针对 web api 的请求都希望通过以某种方式保持用户名和密码有效来完成。
我已经制作了一个工作原型,如果对 REST api 的第一次请求成功,我会将用户名和密码存储在会话变量中,然后从那时起请求是使用从会话变量中获取的身份验证信息发出的。到目前为止一切顺利。
通过这种方法,我意识到有权访问服务器的人将能够读取密码。在 PHP 中是否有某种方法可以让我遵循我的方法并具有适当的安全性?
更新更多细节:
这里的预期目标是基于使用不同数据查询从 API 检索到的数据,而不是让用户每次尝试都输入他的用户名和密码,从而对数据进行可视化。所以 API 是完全无状态的,但是带有 gui 的 Web 应用程序应该是有状态的。
在这种情况下,我无法控制 Rest API,因此对它的每个请求都需要发送带有基本身份验证的 API 用户名和密码,没有替代方案,例如 API 密钥、会话令牌或类似的东西.这就是为什么只要用户会话持续,我就必须保留用户名和密码,我想知道将它们存储在会话变量中的方法是否被认为是安全的。
【问题讨论】:
-
这不是违反 REST 的原则吗?
-
这有点不清楚。您能否更详细地了解在这种情况下客户是谁?您如何登录和查询 API?您将在哪里存储用户名和密码?
-
我希望从我最初的问题中可以清楚地看出,我正在使用保存在 PHP $_Session 变量中的用户名和密码向 REST Api 发出 HTTP 请求,这样我的用户只需输入一次,但我现在已经用更多信息更新了这个问题。
-
你的问题还不清楚。为什么每次请求都包含用户名和密码时,必须在会话中存储用户名和密码?
-
因为我希望用户只需要使用他们的 api 用户名和密码登录我的 webapp 一次。