صفت AntiForgeryToken در MVC

سه شنبه 16 آذر 1395

در این مقاله قصد داریم در مورد (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] در خود داشته باشد .

آموزش asp.net mvc

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید