HttpOnly
默认情况下,rails session cookie 是,但remember_user_token
Devise 的 Rememberable 模块设置的 cookie 不是。
据我了解,发送 cookie 会导致用户收到一个新的会话 cookie,因此它肯定容易受到 XSS 的攻击。
那么有没有办法将它设置为HttpOnly
?
HttpOnly
默认情况下,rails session cookie 是,但remember_user_token
Devise 的 Rememberable 模块设置的 cookie 不是。
据我了解,发送 cookie 会导致用户收到一个新的会话 cookie,因此它肯定容易受到 XSS 的攻击。
那么有没有办法将它设置为HttpOnly
?
在#rubyonrails 上@camonz 的帮助下,我想出了这个猴子补丁: https ://gist.github.com/749289
在 Devise 1.1.3 中,cookie 选项是硬编码的,所以我认为只需要一个猴子补丁就可以了。
然而,Devise 1.2rc 看起来允许配置,因为它会resource.cookie_options
引入(例如,从 User 模型中提取 cookie_options,因此您应该能够以某种方式将其设置在那里 - 还没有弄清楚)。
PS我还没有想出如何测试这个。要在 Chrome 中手动测试切换到设置 cookie 的选项卡,使用 Alt + Cmd + I 打开开发者工具,切换到存储选项卡,单击“Cookies”下的项目(在我的情况下为 localhost),然后查看 HTTP柱子。如果 cookie 是 HttpOnly,就会有一个勾号。作为参考,默认调用的 rails session cookie_session_id
默认为 HttpOnly。