我们的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处理这种情况的方法是什么?
答案 0 :(得分:1)
我不认为使用两个CSRF令牌会导致任何问题,只要服务器端的这些令牌的匹配正确完成即可。实际上,有一些真正的Web应用程序确实使用了两个随机令牌。一个存在于URL中,另一个嵌入在网页中。但是,只有一个CSRF令牌足以阻止CSRF攻击。