Using ASP.Net MVC v2.0, I am starting to research the use of the Html.AntiForgeryToken()
method when submitting forms that process data. I can see it sets a hidden value in the form HTML and it sets the same value in a session cookie.
The question is will different web servers in a load balanced configuration create the same token in the HTML forms? It seems if they don't then the cookie and hidden form value wouldn't match and we would have a problem. Before I get into actually testing this in a LB configuration, wanted to check if anyone already has experience with this?
Thanks, Paul
To help prevent CSRF attacks, ASP.NET MVC uses anti-forgery tokens, also called request verification tokens. The client requests an HTML page that contains a form. The server includes two tokens in the response. One token is sent as a cookie.
AntiForgeryToken()Generates a hidden form field (anti-forgery token) that is validated when the form is submitted.
In ASP.NET Core, @Html. AntiForgeryToken() is applied for preventing cross-site request forgery (XSRF/CSRF) attacks.
Adding an AntiForgeryToken generates a Cryptographically valid hash at the server end which is split and a part is added as a hidden field, whereas the rest goes into a cookie. When data is posted, the Cookie and the Hidden Field are both sent back and if they are missing or they don't match, the POST is rejected.
If all machines across the farm share the same <machineKey>
, everything will work. There are lots of resources on how to set this. There's also a tutorial on MSDN.
Note that the name <machineKey>
is a bit misleading, since this is actually set per-application in ~/Web.config
. So set the <machineKey>
explicitly in your app's Web.config, then deploy across your farm.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With