如何让Devise Rememberable模块仅使用http记住我的cookie?

时间:2010-12-17 05:56:22

标签: ruby-on-rails xss devise remember-me httponly

默认情况下,rails会话cookie为HttpOnly,但Devise的Rememberable模块设置的remember_user_token Cookie不是。{/ p>

据我了解,发送时cookie会导致用户被发布一个新的会话cookie,所以它肯定会受到XSS的攻击。<​​/ p>

那么有没有办法将其设置为HttpOnly

1 个答案:

答案 0 :(得分:2)

在@rubyonrails的@camonz的帮助下,我想出了这个猴子补丁: https://gist.github.com/749289

在Devise 1.1.3中,cookie选项是硬编码的,因此猴子补丁是我认为可行的。

但是,Devise 1.2rc看起来会允许配置,因为它会引入resource.cookie_options(例如从User模型中提取cookie_options,所以你应该能够以某种方式设置它 - 还没有想到它)。

P.S。我还没弄明白如何测试这个。要在Chrome中手动测试切换到设置cookie的选项卡,使用Alt + Cmd + I打开开发人员工具,切换到存储选项卡,单击“Cookies”(我的情况下为localhost)下的项目,然后查看HTTP柱。如果cookie是HttpOnly会有一个勾号。作为参考,默认情况下称为_session_id的rails会话cookie默认为HttpOnly。