跨站點請求偽造是一種攻擊類型,其中只要有心人士看網站的原始碼,就可以知道將表單資料往哪邊送,若他寫了小程式,就可能在你不知情或未經許可的情況下添加、修改或刪除網站上的數據。
如果是用 POST 進來 Rails 會檢查你有沒有 AuthenticityToken,有的話 Rails 會先比對你送進來的 AuthenticityToken 是不是我網站發出的,是一樣的才可以送資料進來,而且每次刷新的 AuthenticityToken 都會不一樣,不是我網站發出的跟沒有 AuthenticityToken 就當作是無效是別的站位打過來的。
從圖可看出我建了 2 個表單,裡面各有一個標題、input 跟送出按鈕
第一個表單是用下方的表格做出,這個我沒有設 AuthenticityToken
所以當沒有設 AuthenticityToken 時 Rails 在開發的時候會噴出現以下錯誤訊息畫面
第二個表單是使用 Rails 內建的方法<%= form_for %>
,從右邊瀏覽器的圖可得知,我並沒有多打什麼,他就會自動生產 AuthenticityToken 以及一些內容物。