会话存储是否安全?

Can session storage be safe?

本文关键字:安全 是否 存储 会话      更新时间:2023-09-26

我想使用会话存储查询数据库中的用户数据只有一次,然后简单地使用JS检索它,所以我正在考虑使用会话存储。我的下一个问题是,这样安全吗?

请注意:

1。 JS不能插入到带有表单的页面(表单只接受字母数字值),所以它只能来自URL

1.1像www.website.com/?q=blablabla这样的查询字符串在php中不使用(php不会从url中检索任何数据)

1.2在url中用javascript:script调用js…这不是一个大问题,因为用户只能访问他自己的数据,更不用说他已经可以访问它了——这就是用户数据

的意义所在

1.3是否存在用户通过包含JS的链接重定向到站点的第三种方式,而不是能够访问会话存储?例如:像- www.website.com/script…

我的猜测是只有像1.3这样的东西会是一个威胁(除此之外,我错过了什么吗?),但这甚至存在吗?如果是这样,有办法预防吗?

感谢您的回复。

会话存储的安全性主要依赖于两方面:

  1. 浏览器限制只能从该域访问页面上的javascript
  2. javascript在页面上运行是安全的

现在你对第1条做不了什么,因为这是供应商的问题,我不是特别针对任何人,但是,大多数通常都很擅长这类事情。

所以你可以相当肯定没有其他代码在任何其他选项卡,域名,浏览器或进程将能够看到你的存储对象。

然而,第二点更难,你必须自己评估你的页面对脚本攻击的安全程度,有很多关于最佳实践的文档,但你可能要花几天时间。你真的需要判断数据的敏感程度,以及保护它需要做多少工作和可能损失的功能。

如果它真的是敏感数据,我会质疑你为什么要冒险将它存储在客户端并且只能通过HTTPS访问。但是你的网站应该对大多数脚本攻击是安全的,因为如果第三方javascript正在运行会话cookie就会被抢夺,因此你的服务器安全也会受到损害。

由于会话存储只能由在您的页面上运行的JavaScript读取,我认为您的问题归结为"如何执行/插入JavaScript到我的页面?"有两种攻击方法:XSS,即通过向站点提交数据将JavaScript注入页面。如果没有过滤这些数据,它可能会在HTML中插入脚本标记或JavaScript事件。有很多方法可以做到这一点并防止它,所以我不能更具体。

一个较小的威胁是通过特殊制作的链接来欺骗网站显示或更改信息,这些链接会调用您页面上的特定操作。这种技术被称为CSRF。示例:有人制作了一个链接到"更改电子邮件"页面,并欺骗登录的用户点击该链接,从而更改了会话存储中的电子邮件信息。

如果您的应用程序是公共的,任何人都可以在浏览器中打开会话存储并查找密钥的名称。因此,除非它们是随机的,否则在这里不提供任何保护。