2012-11-29 9 views
239

ValidateAntiForgeryToken amacını açıklar mısın ve bana örnek olarak ValidateAntiForgeryToken MVC 4?ValidateAntiForgeryToken amacı, açıklama ve örnek

Bu özniteliği açıklayan herhangi bir örnek bulamadım?

+6

Kontrolü Bu yazı formu doğrulamak için kullanılır böylece jetonu eklemek http://prideparrot.com/blog/archive/2012/7/securing_all_forms_using_antiforgerytoken – VJAI

+1

Bu arada, MS'nin neden bu hakkı ".BeginForm" yardımcılarına dahil etmediğini gerçekten anlamıyorum. Yani bu şey orada otomatik – jazzcat

cevap

281

MVC'nin sahteciliğe karşı desteklemesi, yalnızca HTTP'ye özel bir çereze benzersiz bir değer yazar ve sonra aynı değer forma yazılır. Sayfa gönderildiğinde, çerez değeri form değeriyle eşleşmezse bir hata ortaya çıkar.

Bu özelliğin cross site request forgeries'u engellediğini unutmamak önemlidir. Yani, kimliği doğrulanmış bir kullanıcının kimlik bilgilerini kullanarak gizli içerik göndermeye yönelik bir girişimde sitenize gönderilen başka bir siteden bir form. Saldırı, giriş yapmış olan kullanıcıyı bir form göndermeyi veya yalnızca sayfa yüklendiğinde bir formu programlı olarak tetiklemeyi içerir. Özellik, başka türde bir veriyi sahtecilik veya kurcalamaya dayalı saldırılara engel değildir.

Kullanmak için, eylem yöntemini veya denetleyiciyi ValidateAntiForgeryToken özniteliği ile dekore edin ve yönteme gönderilen formlarda @Html.AntiForgeryToken() numarasına bir çağrı yerleştirin.

+0

MVC CRUD Şablonları bu uygulamaya şekilde bakılırsa Yardımlarınız –

+1

için teşekkür ederim Rails gibi, bu doğru gibi görünmüyor. Oluşturduğu formları kullanarak oluşturursanız, her formun içinde: @ Html.AntiForgeryToken() görürsünüz. Bunun için VSDoc, içinde sahteciliği önleyici jetonla gizli bir form alanı oluşturduğunu söylüyor. Görünüşe göre aslında gizli bir form alanı ve bir çerez değil. Bir çerez olduğu ayrı bir senaryo var mı? –

+4

@Chris İkisi de. Benim cevabım gereği: "bir HTTP-sadece bir çerez için benzersiz bir değer yazar ve sonra * aynı değer formuna yazılır *" –

36

ValidateAntiForgeryToken özniteliğinin temel amacı, siteler arası talep sahteciliği saldırılarını engellemektir.

xsrf xsrf hakkında daha fazla bilgi, http://www.asp.net/mvc/overview/security/xsrfcsrf-prevention-in-aspnet-mvc-and-web-pages ziyaret ediniz user.For güvenilen bir saldırganın tarayıcıdan zararlı betik elemanı veya kötü amaçlı komut veya kodu gönderir ettiği bir saldırıdır.

[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult CreateProduct(Product product) 
{ 
    if (ModelState.IsValid) 
    { 
    //your logic 
    } 
    return View(ModelName); 
} 

O System.Web.Mvc ad

dan Ve görünümünde türetilmiştir, bu kod ekleyin:

Kullanımı basittir, aşağıdaki gibi özellik ValidateAntiForgeryToken ile yöntemini süslemek için ihtiyaç o ibrazı üzerine

@Html.AntiForgeryToken() 
+0

Evet haklısınız, formunuzdan @ Html.AntiForgeryToken() öğesini çağırmanız ve korumak istediğiniz eylem yöntemine ValidateAntiForgeryTokenAttribute değerini eklemeniz gerekir. –