默認導軌會話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