Is CSRF Protection necessary on a sign-up form?

John H picture John H · Mar 24, 2013 · Viewed 8.7k times · Source

Rails automatically adds CSRF protection to all forms by default by adding an authentication_token to all forms generated by the site.

I'd really like my site to have a simple sign up form on the front page of the site, which of course would be a static HTML page. This would ideally avoid hitting the Rails stack at all, allowing me to serve far more requests to the front page.

The downside of this is that it makes CSRF protection more difficult.

But I'm wondering if it is really necessary to have CSRF protection on a sign-up form, considering that CSRF attacks typically depend on the victim being logged in so that trust can be exploited. The sign-up form would log the user in if it validates correctly, but I don't think that would be any use to an attacker.

Is there an established view on this or a work-around using Rails/jQuery?

Answer

f4der picture f4der · Mar 30, 2013

No, for this specific situation not. A CSRF attack allows an attacker to exploit the rights that a victim has, e.g. bank.com/pay?ammount=1000&to=34.67.978.246

It makes no sense to attack the log in form, since an attacker can log in by himself if he has the information that is required for a succesfull attack on the login field (the username and password).

The reason why Rails uses CSRF protection on the login field is simple: it's much more simple to implement CSRF protection globally than for 95% of the fields ;)