CSRFとは
Cross Site Request Forgeryのことで、
Webアプリに知らない間にリクエストが送られる不正攻撃のことです
例えばインスタで知らない間に自分の投稿を消されていたりしたら
CSRFです。
CSRF対策の設定
application_controller.rbに下のような記述をすると、
Can't verify CSRF token authenticity
というエラーが出てきます。このエラーが出たらCSRFのエラーで
Railsがちゃんとしたリクエストがいっているかどうかを CSRF Tokenというもので
確認するのですがそれが確認できないというエラーです。
application_controller.rb
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
end
解決策
application_controller.rbに下のような記述をします。
application_controller.rb
class ApplicationController < ActionController::Base
protect_from_forgery with: null_session
end
これは公開する時にはあまり役に立たないです。CSRF対策をOFFにしてしまう
からです。
他にも
class ApplicationController < ActionController::Base
skip_before_action :verify_authenticity_token
end
このような方法もあるみたいです。 CSRF 対策を放棄する時に使います。
最後に
上のやり方はあくまでエラーを解決するための方法です。
アプリを公開したりする場合は、CSRF Tokenの設定が必要になります。
下の参考資料に載っているので調べてみてください。
参考資料