devise 安全性修正:reset token 洩漏問題

簡單解釋,並且你可以重現這個問題 …

一般更換密碼會寄送 mail,mail 內有更換密碼的 url,url 有帶 reset token 的 params,點下後到更換密碼的頁面,該 url 其實還在網址列上,按下該頁面任何一個連結,則對象就會收到該 reset token,如果該頁面有協力廠商,誤觸後你的協力廠商也能從他收到的 http header 的 referer 接收到使用者的 token …

解法,在對象頁面增加一個 meta tag 類似

<meta name="referrer" content="no-referrer" />

然而你可以在 view 內增加一個超級快速解

<% if params[:reset_password_token] %>
  <meta name="referrer" content="no-referrer" />
<% end %>

切記別全加,否則廣告追蹤和類似 redirect_to :back 的用法會失效,因為你將收不到 referer 所以不知道上一頁是啥 …

devise 官方有 issue 應該還沒修正就是

1個讚