2015-08-28 93 views
0

如果cookie只存储在本地客户端的浏览器上,并且绝不会通过互联网发送到服务器,那么Cookie是否安全?本地存储的Cookie的安全性

编辑 - 我做一个加密文件服务,它的工作方式是用户有两个密码,一个用于登录他的账户,另一个用于加密和解密他们的文件。登录后,他们会看到一个窗口,询问他们的解密密码。该密码存储在用户浏览器的cookie中。从服务器发送加密的文件列表,javascript使用cookie解密(并在浏览器中加密一次上传的文件,然后php在服务器上对其进行加密)。这是一种安全的做事方式还是他们更好的方式?附:我确实使用SSL,但我试图增加更多安全性

+0

你可能想充实你的问题,并在security.stackexchange.com上提问 - 我认为这不适合SO。 –

+0

@ Two-BitAlchemist是如此的正确。我会用1-2页来回答这个问题,但总之,使用HTML5的本地存储功能来存储密钥而不是cookie。 –

回答

0

Cookie随每个请求一起发送。所以,如果你使用的标题上的浏览器设置cookie:

Set-Cookie: Password=foo 

那么即使将图像从您的服务器请求:

<img src="/images/bar.jpg" /> 

请求将包含被设置Cookie:

Cookie: Password=foo 

取而代之的是,HTML5 session storage is recommended。会话存储对于每个浏览器选项卡都是唯一的,并在用户离开页面时被清除。它只能通过JavaScript读取,并且不会为每个请求自动发送。

此外,由于您将拥有本地攻击者可读的密码,并且由于基于密码的密钥与密码一样安全,因此建议使用JavaScript PBFDF2bcrypt implementation以加强密钥。这将使任何加密的对象难以通过暴力破解进行解密,因为每次密码尝试都需要通过散列函数运行,从而大大减缓了攻击。这也意味着,如果在客户端上查看存储,密码将不会以明文形式显示。虽然这可能是一个有争议的问题,因为如果攻击者可以读取加密密钥(即使它被哈希),它们仍然可以解密数据,但是如果用户在其他系统上重用了密码,它将不能被反向工程在那里使用。