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

2024-05-20

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

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

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

更新一些更多细节:

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

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


只要您不在 REST API 服务器上存储会话状态,而仅在客户端 Web 应用程序上存储会话状态,从体系结构的角度来看似乎没问题。

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

PHP 会话安全 https://stackoverflow.com/questions/328/php-session-security.

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 使用“assign()”为列表项分配值

    首先了解一些背景 我写了一个中缀函数 本质上取代了这个习惯用法 x length x 1 lt y 或者简单地说x lt append x y 对于向量 这里是 lt function x y xcall lt substitute x x
  • 为什么 $((true == false)) 在 bash 中计算结果为 1?

    为什么 bash 有以下行为 echo true false 1 我本以为这会打印0 但它打印1 以下事实使情况变得更加复杂 gt echo true 0 gt echo false 0 gt echo true true 1 gt ech
  • javaquartz从计划的作业中获取所有详细信息

    我有一个包含多个作业的调度程序 我希望能够显示调度程序中的所有活动作业 我的意思是我想显示每个作业何时被触发 这是我的代码 sched start JobDetail job newJob Jobs class withIdentity j
  • 宏内调用函数和宏的区别?

    我的难题是以下示例 defmacro macro1 x println x defn func1 x println x defmacro macro2 x macro1 x func1 x defmacro macro3 x func1
  • 如何使用 aws-cdk 在 EC2 和 RDS 之间创建 DependsOn 关系

    我目前正在使用aws cdk TypeScript 创建一个堆栈 其中包含EC2实例和一个RDS数据库实例 The RDS实例需要在之前设置EC2实例可以启动并且userdata将被执行 我遇到的问题是 我找不到一种方法来定义DepensO
  • Intel:序列化指令和分支预测

    英特尔架构开发人员手册 http www intel com content www us en architecture and technology 64 ia 32 architectures software developer v
  • 在 2D 中将一个点旋转另一个点

    我想知道当一个点相对于另一个点旋转一定角度时如何计算出新的坐标 我有一个块箭头 想要将其相对于箭头底部中间的点旋转角度 theta 这是允许我在两个屏幕控件之间绘制多边形所必需的 我无法使用和旋转图像 从我到目前为止所考虑的情况来看 使问题
  • 一个模型可以通过多个编辑器模板传递吗?

    我尝试使用编辑器模板显示视图模型 该模板在应用基本对象编辑器模板之前将模型包装在字段集中 My view model Mvc3VanillaApplication Models ContactModel using Html BeginFo
  • 无法捕获 Spring Batch 的 ItemWriter 中的异常

    我正在编写一个 Spring Batch 流程来将数据集从一个系统迁移到另一个系统 在这种情况下 这就像使用RowMapper实现在传递给查询之前从查询构建对象ItemWriter The ItemWriter称为save我的 DAO 上的
  • AdMob 收入是如何计算的? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我对 AdMob 收入的计算方式有点困惑 我想使用以下屏幕截图作为示例 我有一些问题 每次点击费用是如何计算的 因为在这个例子中它是 1
  • select 语句是否保证通道选择的顺序?

    继从这个答案 https stackoverflow com a 25795236 274460 如果一个 goroutine 在两个通道上进行选择 是否保证通道的选择顺序与其发送的顺序相同 我对发送者是单线程的情况特别感兴趣 例如 是否保
  • 如何将 WPF 大小转换为物理像素?

    将 WPF 与分辨率无关 宽度和高度转换为物理屏幕像素的最佳方法是什么 我正在 WinForms 表单中显示 WPF 内容 通过 ElementHost 并尝试制定一些大小调整逻辑 当操作系统以默认 96 dpi 运行时 我可以正常工作 但
  • ASP.NET C# 中的自定义控件

    我创建了一个简单的自定义控件 它仅继承自Literal控件 并且还没有任何扩展 代码为空 命名空间 CustomControls 类名 文字 System Web UI WebControls Literal 接下来我要做的就是在aspx页
  • Qt 创建布局并动态添加小部件到布局

    我正在尝试在 MainWindow 类中动态创建布局 我有四个框架 它们是用网格布局对象放置的 每个框架都包含一个自定义的 ClockWidget 我希望 ClockWidget 对象在调整主窗口大小时相应地调整大小 因此我需要将它们添加到
  • 将数据打印到文件

    我已经超载了 lt lt 运算符 使其写入文件并写入控制台 我已经为同一个函数创建了 8 个线程 并且我想输出 hello hi 如果我在无限循环中运行这个线程例程 文件中的o p是 hello hi hello hi hello hi e
  • Windows10上打开/创建内网Vagrant失败

    我昨天将 Windows 10 升级到了最新更新 现在启动时vagrant up命令 我收到此错误 gt default Booting VM gt default Waiting for machine to boot This may
  • JQuery 验证在 IE8 中不起作用

    我使用 JQuery 验证脚本来验证 HTML 表单 这在 Firefox 中完美运行 但在 IE8 中不起作用 我认为冒号 或分号 有问题 但我无法抓住它 jQuery validator addMethod selectNone fun
  • 部分共享git仓库

    我是 git 新手 我想知道是否支持以下场景 如果支持的话如何支持 即用于设置和更新的 git 命令 可以从三个不同的地方获取存储库 本地 镜像 和 github mirror 完全镜像 local github 镜像 local 但 受版
  • android httprequest java.net.UnknownHostException

    我想用android发出http请求 是使用这个 void testHTTP HttpClient httpClient new DefaultHttpClient HttpUriRequest request new HttpPost h
  • 我可以在 PHP 会话变量中安全地存储用户名和密码吗?

    我想在 REST api 之上制作一个轻量级的 web 应用程序 用户只需进行一次身份验证 从那时起 所有针对 web api 的请求都希望通过以某种方式保持用户名和密码有效来完成 我已经做了一个工作原型我在哪里将用户名和密码存储在会话变量