默认导轨会话cookie为HttpOnly
,但Devise的可记忆模块设置的Cookie不是remember_user_token
。如何让Devise的Rememberable模块使用http_only记住我的cookie?
据我所知,cookie发送时会导致用户被发出一个新的会话cookie,所以它肯定会受到XSS的影响。
那么有没有办法将它设置为HttpOnly
?
默认导轨会话cookie为HttpOnly
,但Devise的可记忆模块设置的Cookie不是remember_user_token
。如何让Devise的Rememberable模块使用http_only记住我的cookie?
据我所知,cookie发送时会导致用户被发出一个新的会话cookie,所以它肯定会受到XSS的影响。
那么有没有办法将它设置为HttpOnly
?
随着@camonz对#rubyonrails的帮助下,我想出了这个猴子补丁: https://gist.github.com/749289
在设计1.1.3 cookie的选项进行硬编码,以便猴子补丁是我所能想到会工作。但是,Devise 1.2rc看起来像允许配置,因为它拉入了resource.cookie_options
(例如,从用户模型中拉取cookie_options,所以你应该能够以某种方式设置它 - 还没有计算出来)。
P.S.我还没有想出如何测试这个呢。要在Chrome中手动测试,切换到选项卡,将Cookie设置为,使用Alt + Cmd + I打开Developer Tools,切换到存储选项卡,单击“Cookie”(本地主机)下的项目,然后查看HTTP柱。如果Cookie是HttpOnly,将会出现勾号。默认情况下,rails会话cookie默认为_session_id
,仅供HttpOnly参考。
该要点现在也有一个规范。 – jim 2010-12-22 09:54:36
现在Devise的主分支中还有一个补丁程序,所以它应该在即将推出的版本中。 https://github.com/plataformatec/devise/pull/735#issuecomment-634501 – jim 2010-12-26 05:08:58