Ruby on rails 3.2 静态页面上的CSRF保护

Ruby on rails 3.2 静态页面上的CSRF保护,ruby-on-rails-3.2,security,csrf,csrf-protection,Ruby On Rails 3.2,Security,Csrf,Csrf Protection,我有一个有表单的静态站点。表单提交到Rails端点,该端点捕获提交的数据。静态站点和Rails端点位于同一个域上,位于不同的子域上,并且所有流量都完全在HTTPS上 我了解Rails CSRF如何用于服务器生成的表单。但在我的例子中,这些表单位于静态HTML页面上。我知道所有的请求头都可能是伪造的,所以不能依赖它 如果在这种情况下不可能有一个强大的解决方案,那么我的最后一个选择将是转移到服务器生成的表单(这是我现在想要避免的) 任何关于这方面的好方法的建议都是非常受欢迎的。或者任何指向已经这样做

我有一个有表单的静态站点。表单提交到Rails端点,该端点捕获提交的数据。静态站点和Rails端点位于同一个域上,位于不同的子域上,并且所有流量都完全在HTTPS上

我了解Rails CSRF如何用于服务器生成的表单。但在我的例子中,这些表单位于静态HTML页面上。我知道所有的请求头都可能是伪造的,所以不能依赖它

如果在这种情况下不可能有一个强大的解决方案,那么我的最后一个选择将是转移到服务器生成的表单(这是我现在想要避免的)

任何关于这方面的好方法的建议都是非常受欢迎的。或者任何指向已经这样做的系统或库的指针

谢谢

我建议你读这本书

可以使用两种静态方法

1) 使用JavaScript获取令牌并重写静态HTML页面以包含nonce


2)

On 2>是否不可能欺骗HTTPS POST请求的REFERER标头?这会降低安全性?CSRF备忘单上说:虽然在您自己的浏览器上欺骗REFERER标头很简单,但在CSRF攻击中不可能做到。-我不太明白这一点。@Akshay Raw在CSRF的观点是,你是在你的受害者浏览器的范围内伪造一个请求。referer、origin和其他标题永远不能修改。使用Flash可以更改某些标题,但Referer和Origin始终是禁止的。