安全性 - 会话(默认使用 - Cookie)与本地存储


Security - Sessions ( default use - Cookie ) vs. local storage

我不关心浏览器兼容性。

我想知道如果我将我的状态从 PHP 控制(服务器端)会话移动到 JavaScript 控制(客户端 - 端)HTML 5 本地存储,我会获得还是失去安全性。

我认为我会获得安全性,因为现在而不是将用户标识符驻留在 cookie 中,通常是文件或易于访问的 sql 数据库......它不在某种内部浏览器存储中。+ BC 这是一项较新的技术,我希望在其中设计出更多的安全性。

我是通过从 PHP 会话迁移到 JavaScript 本地存储来获得还是失去安全性。(这适用于用户 id、page_id等,重新加载后保持的当前状态,如果需要,可以更长时间)。

我有一个 JavaScript 解决方案,我想用它替换我的 PHP 会话。 这就是我问的原因。 我不在乎浏览器兼容性。

这是一个关于本地存储的信息网站。 但没有提到安全性。

两种类型的本地存储(localStorage和Cookie)都使用某种标识符,该标识符显然存储在客户端上。

两者都使用哈希机制来保护它不会更改为其他用户。

本地存储比 cookie 更安全(见这里)。

显然,如果您想将用户标识符从cookie移动到localStorage,则必须编写会话协议。

两者都可以被窃取以假装是另一个用户。 虽然不太可能使用本地存储。

为了使强大,您需要一种有助于解决上述问题的指纹识别技术。

我有一个 JavaScript 解决方案,我想用它替换我的 PHP 会话。

不。不要这样做。会话存储在服务器端。发送到浏览器的 Cookie 通常是该记录的标识符。会话存储特定于用户的数据。存储在客户端的几乎所有内容都可以由用户轻松修改。因此,如果用户修改会话以指向另一个用户,则安全性将不再成立。

本地存储不是用来存储会话的。坚持使用 PHP 会话,或在服务器端实现的任何其他会话机制。

更新

但是也存在同样的安全漏洞...用户可以以一个人的身份登录 人。。。摆弄会议session_id并成为某人 还。。。摆弄着session_id...等同于摆弄你是谁 似乎是服务器?...这与摆弄相同 local_storage中的加密user_id。

不。假设我弄清楚您正在加密的算法。我知道另一个用户说用户B。我用这种算法加密了他的用户名。如果我以某种方式用该加密字符串覆盖我的本地存储,我现在就是他。这实际上是不可能的。可以将其视为有 100 个用户,128 字节字符串是标识符。您确定能够摆弄它并将其修改为会话表中存在的另一条记录吗?

本地存储最适合您希望以(更永久)的方式(而不是常规浏览器缓存)在客户端上缓存的数据。它"更安全"的唯一方法是,如果您希望允许用户处理从未发送到服务器的数据。

如果您担心会话劫持,首选解决方案是使用 https/ssl 并加密您和客户端之间的所有流量。维基百科上有关于问题和解决方案的一般概述(不过,我们需要更多信息来为您提供比这更具体的信息)。

您不会获得或失去安全性,因为在大多数浏览器中,站点设置的所有数据都存储在同一个文件夹中