在一个页面上有两个CSRF令牌会导致问题吗?

时间:2014-06-18 19:57:49

标签: ruby-on-rails ruby-on-rails-3 csrf

我们的Rails 3应用程序中有一些页面生成两组CSRF令牌:一个在页眉中使用csrf_meta_tag,另一个在自动生成的表单中。我们的再培训局看起来像这样:

布局:

<html>
  <head>
    <%= csrf_meta_tag %> <%# Generates CSRF tokens %>
  </head>
  <body>
    <%= yield %>
  </body>
</html>

查看:

<% form_for @my_model do |f| %> <%# Generates more CSRF tokens %>
  <%= f.submit %>
<% end %>

这可以接受吗?是否有可能在提交表单时导致问题,无论是通过生成的提交按钮还是通过JavaScript?如果这是一个坏主意,那么Rails处理这种情况的方法是什么?

1 个答案:

答案 0 :(得分:1)

我不认为使用两个CSRF令牌会导致任何问题,只要服务器端的这些令牌的匹配正确完成即可。实际上,有一些真正的Web应用程序确实使用了两个随机令牌。一个存在于URL中,另一个嵌入在网页中。但是,只有一个CSRF令牌足以阻止CSRF攻击。