صفت AntiForgeryToken در MVC

در این مقاله قصد داریم در مورد (cross site request forgery (CSRF و روش های جلوگیری آنها توضیحی بدهیم.قبل از هرچیز شما نیاز به اطلاعاتی در مورد حملات که یک چیز بسیار معقول است، دارید.

صفت AntiForgeryToken در MVC

یک سرور میتواند دارای نام برنامه باشد که این شماره از درخواست ها به برنامه میباشد ؛ اما سرور نمیتواند تشخیص دهد که کدام درخواست معتبر است.

در واقع سرور دانشی در مورد پیدا کردن درخواست های نا معتبر را ندارد.

ما یک برنامه را توسعه داده ایم حال میخواهیم آن را در مرورگر اجرا کنیم.

در اینجا میبینید که درخواست و پاسخ فقط در این برنامه اتفاق افتاده است.

حال ما سناریو را تغییر میدهیم و ما درخواست خود را از برنامه دیگری به کنترلر ارسال میکنیم.

در اینجا من یک درخواست از یک صفحه اچ تی ام ال ساختگی ارسال میکنم و یک پاسخ معتبر از سرور دریافت میکنم.

کافیست که صفت را در کد خود وارد کنید :

[HttpPost]  
[ValidateAntiForgeryToken]  
[ActionName("Index")]  
public ActionResult IndexPost()  
{  
   string userName = Request.Form["txtUser"].ToString();  
   string passWord = Request.Form["txtAddress"].ToString();  
   return Json(true);  
} 

کد :

@Html.AntiForgeryToken()  
    <p>UserName</p><input type="text" id="txtUser" name="txtUser" value="Maruthi" /><br/>  
    <p>Address</p><input type="text" id="txtAddress" name="txtAddress" value="India" /><br/>  
    <p></p><input type="submit" value="PostData" /> 

حال یکباره دیگر کاری که قبل از اضافه کردن صفت را انجام داده بودیم را تکرار میکنیم.

حال سرور به شما هیچ پاسخی نمیدهد در واقع سرور با کمک این صفت توانست درخواست را اعتبار سنجی کند.

ValidateAntiForgeryToken  به این صورت کار میکند :

• با کمک IHtmlString یک مقدار منحصر به فرد میسازد  و در cookie مرورگر ذخیره میکند.

• هر درخواست باید این مقدار را تحت Request. Form[0] در خود داشته باشد .