Cross-site request forgery, även kallat CSRF och XSRF, är ett sätt att lura en användare att utföra saker den inte vill göra. T.ex kan någon ha postat följande som en kommentar på en sida som en inloggad användare går in på:
Resultatet kommer bli att användaren loggas ut varje gång han går in på sidan och inte förstår varför då en GET-request gjordes mot http://forumsite.com/?action=logout. Detta är en ganska ofarlig handling men tekniken kan användas för andra saker så som att komma över användarnamn och lösenord vilket Johan Rydberg Möller har som exempel på webbsäkerhet.se. Jag läste hans inlägg om Cross Site request forgery där han visade PHP-kod för att motverka ett sådant försök att stjäla information och jag tänkte dra mitt strå till stacken och visa hur man gör samma kontroll i ASP.NET MVC:
AntiForgeryToken
Lägg in en AntiForgeryToken med hjälp av <%=Html.AntiForgeryToken()%> så att formuläret ser ut något likande detta:
I ActionResultet som tar emot postningen från formuläret läggs Action Filtret [ValidateAntiForgeryToken] till:
Tas <%=Html.AntiForgeryToken()%>
bort ifrån formuläret kommer det inte att gå att posta.
läs mer på CSRF på cgisecurity.com