好吧,既然你们都不喜欢我的问题,让我重新表述一下。
用户登录到 HTML 表单。使用 JavaScript,他们的密码在本地进行哈希处理(也加盐)。服务器知道密码+盐应该是什么,用户已经注册,blahblahblah。现在用户请求一个页面。服务器向用户发送一个随机 ID。当用户加载下一页时,这个随机 ID 被附加到他们本地存储的密钥上,它被散列,然后被发送到服务器。服务器知道他们的密钥是什么和随机 ID,执行相同的哈希并进行比较。如果它们匹配,恭喜,它来自正确的计算机。如果没有,那么有人一直在嗅探您的 TCP/IP 流量。
所有这一切显然都没有SSL,否则这将是高度冗余的。
我的问题 - 我如何在客户端 PC 上存储密钥?
原帖:
你好;
我正在开发一个 PHP 内容管理系统,并提出了一个安全的登录系统。唯一的问题是它需要某种形式的客户端存储(对于一个非常小的密钥,长度为 40 个字符) - 否则用户必须在每次页面加载时输入他们的密码。
有没有办法,使用 PHP 或 JavaScript,我可以在客户端的 PC 上存储一个 40 个字符的小字符串,然后再检索它?
编辑:饼干不是一种选择。这 40 个字符的字符串不能离开客户端的计算机,并且所有设置的 cookie 都与每个 HTTP 标头一起发送。
我重复一遍 - Cookie 是不安全的,不是一个可行的选择。
让我这样修改它——客户端提交一个 HTTP 表单。使用某些脚本语言(例如 JavaScript),密码会从表单中删除,不会发送到服务器,加密并保存在客户端,我可以检索和验证(通过使用发送给用户的密钥对其进行散列)服务器)。这个验证被发送到服务器,而不是 key。