使用随机路径在本地使用cookie(安全性)

时间:2013-07-03 16:03:48

标签: cookies security

经典问题,一个Web应用程序有安全和不安全的页面(即帐户页面是安全的(HTTPS)和常见问题页面是不安全的(HTTP)),作为开发人员,我希望用户看到一个自定义的登录按钮不安全的页面(例如,如果您是网站的新用户,则表示“点击登录”,如果您有会话,则表示“欢迎用户点击查看您的帐户”。

为此,我只有在帐户页面上发送的服务器设置了安全cookie,但该帐户页面(通过jQuery)也会根据安全cookie设置一个不安全的cookie。浏览器可以使用不安全的cookie来更新登录按钮(通过Javascript)。

我正在使用随机字符串(每次在服务器上随机化)来获取路径,以防止cookie通过网络发送。这个数据只是一个用户名,所以它完全被锁定并不重要,但它应该仍然受到保护。

使用jQuery(jQuery cookie插件)设置Cookie:

$.cookie('userLoggedIn', 'username', { domain: '.example.com', httpOnly: false, path: 'DFKLJGHDFDLFKHGAFDAKDJFH', expires: [one year], secure: false });

到目前为止这么好,但对于黑客来说,路径随机化是否可以阻止窃取不安全的cookie?

1 个答案:

答案 0 :(得分:0)

我知道这是一个非常古老的问题,但我会尽力回答。

是和否。

它不一定需要完全随机 - 它是随机的唯一原因是确保用户永远不会尝试访问该URL,也不会有任何ajax请求。为确保发生这种情况,您可以使用例如路径中的UUID。

您还需要确保控制域中的所有JS。

这样,cookie永远不会通过网络发送(通过网络发送它的唯一方法是让你的JS从document.cookie属性读取它并附加它或以某种方式发送请求随机网址)。

黑客无法读取cookie,因为浏览器保护cookie不受其他域执行的JS(协议://域:端口组合必须匹配)。

因此,读取cookie的唯一方法是访问该机器,然后可以从光盘中读取cookie,因为它保存为纯文本。但是,访问用户帐户会带来更多安全漏洞。

所以要回答你的问题,这是非常安全的,但你必须记住这种解决方案带来的漏洞。