默认情况下,rails会话cookie为HttpOnly
,但Devise的Rememberable模块设置的remember_user_token
Cookie不是。{/ p>
据我了解,发送时cookie会导致用户被发布一个新的会话cookie,所以它肯定会受到XSS的攻击。</ p>
那么有没有办法将其设置为HttpOnly
?
答案 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。