🙆

Rails viewのform起因のCSRFトークン漏洩を対策する

2025/02/06に公開

Railsのviewのformでは、標準でCSRFトークンが付与されます。そのため、送信先のURLがユーザーによって任意のURLを作成できる場合では、CSRFトークンが漏洩する場合があります。

<%= form_tag(@url) do %>
  <%= text_field_tag("key", @value) %>
  <%= submit_tag "Submit" %>
<% end %>

これが送信されると、RailsのActionView::Helpersにより、bodyにauthenticity_tokenが付与されます。authenticity_tokenはCSRFトークンの役割をしていて、漏洩するとCSRFにより攻撃者が被害者になりすまして情報を改竄される可能性があります。

そのため、以下のようにauthenticity_tokenを無効化する必要があります。

<%= form_tag(@url, authenticity_token: false) do %>
  <%= text_field_tag("key", @value) %>
  <%= submit_tag "Submit" %>
<% end %>

Discussion