【问题标题】:What are all the methods to delete local-storage data?删除本地存储数据的方法有哪些?
【发布时间】:2015-08-25 01:16:32
【问题描述】:

我的核心问题是从客户端浏览器中删除window.localStorage 数据(不是window.sessionStorage)的可能方法是什么。我知道的一种方法是转到客户端的控制台并输入localStorage.clear()


我正在构建一个使用 HTML-local-storage 来替换 PHP 会话和 cookie 的 Web 应用程序。

我有一个执行以下操作的网络应用程序:

  1. 用户向服务器请求网页
  2. 服务器使用 JavaScript 响应页面以删除客户端的本地存储数据(电子邮件和密码)。密码实际上是一个 GUID 字符串。
  3. 然后,JavaScript 脚本将作为带有电子邮件和密码的后请求发送到服务器。如果用户是新用户,则电子邮件和密码变量可能为空,如果用户是老用户,则可能包含值。
  4. 服务器检查用户是否存在。
  5. 如果用户不存在,则服务器发送登录页面
  6. 如果用户存在,则服务器发送请求的页面
  7. 一旦用户准备就绪,每次用户从 Web 服务器请求任何网页时都会发生两件事:1) 每次用户请求页面时,请求都会包含用户的本地存储数据(电子邮件和密码) 2)每次用户请求页面时,服务器都会查询数据库以检查用户是否存在。

我的问题是: 1)什么是安全问题 2)有没有更好的方法?我不想使用会话或 cookie。

【问题讨论】:

  • 听起来像很多额外的凭证传递。调查令牌。 localStorage 本身还不错。
  • 为什么不想使用会话或cookies?他们可以很好地处理这些要求。此外,您不会在每次请求时都需要进行身份验证。
  • 如果您想安全地实现这一点,您会发现自己正在重新发明会话。
  • 我看不出这个问题太宽泛了。它详细概述了问题,提出了明确而具体的问题,并作为后续问题要求对答案进行全面解释。

标签: javascript php security credentials web-storage


【解决方案1】:

我正在构建一个使用 HTML-local-storage 来替换 PHP 会话和 cookie 的 Web 应用程序。

本地存储是一种旨在取代两者的解决方案。本地存储用于在客户端存储数据。 Cookie 用于在 HTTP 级别识别客户端。 PHP 会话用于在服务器端存储数据,通常由 cookie 键入。

密码实际上是一个 GUID 字符串。

GUID 并不是真正随机的。根据所使用的算法,GUID 的一部分是服务器生成的 MAC 地址。接下来,还使用时间戳。你留下的熵不多。另见:Are GUIDs good passwords?

然后,JavaScript 脚本将作为包含电子邮件和密码的后请求发送到服务器。 ...

用户每次请求页面,请求中都会包含用户的本地存储数据(邮箱和密码)

像这样通过网络发送密码的问题在于,您为攻击者提供了可预测且频繁的凭据传递。至少,这必须通过安全通道 (HTTPS) 完成。不过,到那时,您的安全性并不可怕。

诀窍是阻止其他人访问本地存储。非常清楚您在页面上包含哪些脚本。 (例如,如果您包含一些分析或广告脚本,它将有权访问该本地存储数据。)

再一次,使用 HTTPS 来防止人们在传输过程中摆弄页面。

更好的方法是使用具有轮换会话 ID 的会话。 “密码”成为会话 ID,它会随着每个请求而改变。这比期望用户提供一个很少更改的弱密码要安全得多。实际用户的用户名和密码仅通过网络发送一次。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    • 2014-12-03
    • 2018-02-04
    • 2016-03-10
    • 1970-01-01
    • 1970-01-01
    • 2022-11-15
    相关资源
    最近更新 更多