如果cookie只存储在客户端浏览器的本地,并且从未通过互联网发送到服务器,那么它是否安全?
编辑 - 我正在制作加密文件服务,它的工作方式是用户有两个密码,一个用于登录他的帐户,另一个用于加密和解密他们的文件。登录后,会出现一个窗口,要求他们提供解密密码。此密码存储在用户浏览器的cookie中。从服务器发送加密的文件列表,javascript使用cookie对其进行解密(并在浏览器中对上传的文件进行一次加密,然后在服务器上对其进行加密)。这是一种安全的做事方式还是更好的方式?附:我确实使用SSL,但我正在尝试添加更多安全性
答案 0 :(得分:0)
每次请求都会发送一个cookie。因此,如果您使用标题在浏览器上设置cookie:
Set-Cookie: Password=foo
然后即使您的服务器请求了图像:
<img src="/images/bar.jpg" />
请求将包含已设置的cookie:
Cookie: Password=foo
相反,HTML5 session storage is recommended。会话存储对于每个浏览器选项卡都是唯一的,并在用户离开页面时清除。它只能通过JavaScript读取,并且不会针对每个请求自动发送。
此外,由于您将拥有本地攻击者可读的密码,并且因为基于密码的密钥仅与密码一样安全,因此建议使用JavaScript PBFDF2或bcrypt implementation in为了加强关键。这将使任何加密对象更难通过暴力攻击解密,因为每次密码尝试都需要通过哈希函数运行,从而大大减缓攻击。这也意味着如果在客户端上查看存储,则密码将无法以明文形式查看。虽然这可能是一个没有实际意义的点,因为如果攻击者可以读取加密密钥,即使它被散列,他们仍然可以解密数据,但如果用户在其他系统上重复使用他们的密码,它将无法进行逆向工程。在那里使用。