Je me demande comment ASP.NET vérifie si un jeton anti-contrefaçon est valide ou non? Comme où ASP.NET stocke-t-il ces jetons? Et comment sont-ils stockés?
La version courte est qu'un jeton généré est stocké à 2 endroits: (a) cookie (b) valeur de forme cachée. Lorsque le formulaire est soumis, ces 2 valeurs sont comparées l'une à l'autre pour déterminer si elles sont valides. Pour en savoir plus:
http://www.asp.net/web-api/overview/security/preventing-cross-site-request-forgery- (csrf) -attackshttp: // www. codeproject.com/Articles/793384/ASP-NET-Anti-Forgery-Tokens-internals
Une explication par étapes qui est plus claire que la réponse acceptée à mon humble avis (de https://docs.Microsoft.com/en-us/aspnet/web-api/overview/security/preventing-cross-site-request- faux-attaques-csrf )
La description ci-dessus n'est pas tout ce qui est fait, dans le cas d'AjaxRequest, l'antiforgery, en particulier dans les requêtes get, n'enverra généralement pas le formulaire avec la valeur cachée pour comparaison, au lieu de cela, vous devrez définir une valeur d'en-tête avec le même contenu du cookie via javascript .. le nom d'en-tête que vous devez définir est par défaut l'en-tête X-XRF-Token [lié aux angularjs] ... bien sûr, vous devrez désactiver CORS ou l'activer uniquement pour des domaines spécifiques afin de protéger les API, SAMEORIGIN doivent également être définis pour éviter le détournement de clics.