0

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

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

我使用随机字符串(每次在服务器上随机)作为路径,以防止 cookie 永远通过网络发送。此数据只是一个用户名,因此完全锁定它并不重要,但仍应加以保护。

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

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

到目前为止一切都很好,但是对于黑客来说,路径随机化是否可以防止窃取不安全的 cookie?

4

1 回答 1

0

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

是和否。

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

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

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

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

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

因此,要回答您的问题,它非常安全,但您必须牢记此类解决方案带来的漏洞。

于 2017-02-06T13:44:54.693 回答