2010-07-20 15 views
3

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

+0

Toutes les classes/méthodes utiles sont privées, protégées ou internes, donc inutilisables en dehors d'une application ASP.NET MVC. –

+1

http://anticsrf.codeplex.com/ – Steven

Répondre

1

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.

+0

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? –