1

我不关心浏览器的兼容性。

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

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

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

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

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

4

4 回答 4

2

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

两者都使用哈希机制来保护它不被更改给另一个用户。

本地存储比 cookie 更安全(请参见此处)。

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

两者都可以被盗以假装成为另一个用户。尽管使用 localStorage 的可能性较小。

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

于 2012-07-23T17:59:54.523 回答
1

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

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

LocalStorage用于存储会话。坚持使用 PHP 会话或在服务器端实现的任何其他会话机制。

更新

但是存在相同的安全漏洞...用户可以以一个人的身份登录...摆弄 Session 的 session_id 并成为其他人...摆弄 session_id...等同于摆弄您的样子到服务器?...这与在 local_storage 中摆弄加密的 user_id 相同。

不。假设我找出了您正在加密的算法。我知道另一个用户说UserB。我使用该算法加密了他的用户名。如果我以某种方式用该加密字符串覆盖我的 localStorage,我现在就是他。这实际上不太可能。可以把它想象成有 100 个用户,并且 128 字节字符串是标识符。您确定您可以摆弄它并将其修改为会话表中存在的另一条记录吗?

于 2012-05-31T14:19:07.400 回答
0

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

于 2013-07-11T21:42:36.127 回答
0

Local storage is best suited for data that you want to cache on the client in a (more permanent) way then with the regular browser cache. The only way it's "more secure" is if you want to allow the user to work with data that's never sent to the server.

If you're worried about session hijacking, the preferred solution would be to use https/ssl and encrypt all traffic between you and the client. There's a general overview of the problem and solutions on wikipedia (we'd need more information to give you anything much more specific than that, though).

于 2012-05-31T14:47:43.903 回答