Ruby on Rails - Request Forgery Protection

什麼是 Request Forgery Protection?

跨站點請求偽造是一種攻擊類型,其中只要有心人士看網站的原始碼,就可以知道將表單資料往哪邊送,若他寫了小程式,就可能在你不知情或未經許可的情況下添加、修改或刪除網站上的數據。

如果是用 POST 進來 Rails 會檢查你有沒有 AuthenticityToken,有的話 Rails 會先比對你送進來的 AuthenticityToken 是不是我網站發出的,是一樣的才可以送資料進來,而且每次刷新的 AuthenticityToken 都會不一樣,不是我網站發出的跟沒有 AuthenticityToken 就當作是無效是別的站位打過來的。

圖例

從圖可看出我建了 2 個表單,裡面各有一個標題、input 跟送出按鈕

第一個表單是用下方的表格做出,這個我沒有設 AuthenticityToken

所以當沒有設 AuthenticityToken 時 Rails 在開發的時候會噴出現以下錯誤訊息畫面

第二個表單是使用 Rails 內建的方法<%= form_for %>,從右邊瀏覽器的圖可得知,我並沒有多打什麼,他就會自動生產 AuthenticityToken 以及一些內容物。

Ruby on Rails 官網說明

comments powered by Disqus