Je suis en train de développer un httphandler pour traiter certaines requêtes dans Web Forms (PAS dans MVC).
Comment pourrais-je implémenter le script anti-cross site (comme antiforgery dans MVC)?
Je veux connaître mre sur le mécanisme antiforgery dans MVC.Implémentation d'AntiForgery dans Asp.net Forms
Répondre
Si vous arrivez à accéder à la Page, vous pouvez utiliser la propriété ViewStateUserKey de la Page. Voici un exemple de la façon de le faire à partir de la page, mais vous voyez l'idée:
protected void Page_Init(object sender, EventArgs e)
{
// Validate whether ViewState contains the MAC fingerprint
// Without a fingerprint, it's impossible to prevent CSRF.
if (!this.Page.EnableViewStateMac)
{
throw new InvalidOperationException(
"The page does NOT have the MAC enabled and the view" +
"state is therefore vulnerable to tampering.");
}
this.ViewStateUserKey = this.Session.SessionID;
}
Alors que le ViewStateUserKey est assez sûr, il y a quelques court vient avec cela. Vous pouvez en savoir plus sur ce here.
Merci J'ai également mis en œuvre ces sections: 1- Vérification de la méthode http à POST. 2- Vérification de l'UrlRefferrer pour être le même nom de domaine. 3- Je vais ajouter votre solution. Si un pirate change son DNS pendant la navigation sur l'application Web, est-ce dangereux ou non? –
Toutes les classes/méthodes utiles sont privées, protégées ou internes, donc inutilisables en dehors d'une application ASP.NET MVC. –
http://anticsrf.codeplex.com/ – Steven