我的核心问题是从客户端浏览器中删除window.localStorage
数据(而不是window.sessionStorage
)的可能方法是什么。我知道的一种方法是进入客户端的控制台并输入localStorage.clear()
。
我正在构建一个web应用程序,使用html本地存储来取代PHP会话和cookie。
我有一个web应用程序,做以下事情:
- 用户向服务器请求网页
- 服务器用JavaScript响应一个页面,删除客户端的本地存储数据(电子邮件和密码),密码实际上是一个GUID字符串。
- JavaScript脚本然后发送邮件和密码的post-request到服务器。如果用户是新用户,则email和password变量可能为空;如果用户是返回用户,则可能包含值。
- 服务器检查用户是否存在
- 如果用户不存在,则服务器发送登录页面
- 如果用户存在,则服务器发送请求的页面
- 一旦用户准备好了,每次用户从web服务器请求任何网页时都会发生两件事:1)每次用户请求页面时,请求将包含用户的本地存储数据(电子邮件和密码)2)每次用户请求页面时,服务器对数据库进行查询以检查用户是否存在。
我的问题是:1)安全问题是什么2)有更好的方法吗?我不想使用会话或cookie
我正在构建一个web应用程序,使用HTML-local-storage来代替PHP会话和cookie。
本地存储是一种旨在取代两者的解决方案。本地存储用于存储客户端数据。cookie用于在HTTP级别识别客户端。PHP会话用于在服务器端存储数据,通常由cookie进行键控。
密码实际上是一个GUID字符串。
guid并不是真正随机的。根据使用的算法,GUID的一部分是生成服务器的MAC地址。接下来,还将使用时间戳。剩下的熵就不多了。参见:guid是好密码吗?
JavaScript脚本然后将带有电子邮件和密码的post-request发送给服务器。…
每次用户请求一个页面时,请求将包含用户的本地存储数据(电子邮件和密码)
像这样通过网络发送密码的问题是,您正在向攻击者提供可预测且频繁的凭据传递。至少,这必须通过安全通道(HTTPS)完成。在这一点上,你的安全并不可怕。
诀窍是阻止其他人访问本地存储。要非常注意页面中包含了哪些脚本。(如果你包含一些分析或广告脚本,例如,它将有权访问本地存储数据。)
同样,使用HTTPS来防止人们篡改传输中的页面。
更好的方法是使用具有旋转会话ID的会话。"密码"将成为会话ID,并根据每个请求进行更改。这比期望从很少更改的用户那里获得弱密码要安全得多。实际用户的用户名和密码只通过网络发送一次。