صفت AntiForgeryToken در MVC
سه شنبه 16 آذر 1395در این مقاله قصد داریم در مورد (cross site request forgery (CSRF و روش های جلوگیری آنها توضیحی بدهیم.قبل از هرچیز شما نیاز به اطلاعاتی در مورد حملات که یک چیز بسیار معقول است، دارید.
یک سرور میتواند دارای نام برنامه باشد که این شماره از درخواست ها به برنامه میباشد ؛ اما سرور نمیتواند تشخیص دهد که کدام درخواست معتبر است.
در واقع سرور دانشی در مورد پیدا کردن درخواست های نا معتبر را ندارد.
ما یک برنامه را توسعه داده ایم حال میخواهیم آن را در مرورگر اجرا کنیم.
در اینجا میبینید که درخواست و پاسخ فقط در این برنامه اتفاق افتاده است.
حال ما سناریو را تغییر میدهیم و ما درخواست خود را از برنامه دیگری به کنترلر ارسال میکنیم.
در اینجا من یک درخواست از یک صفحه اچ تی ام ال ساختگی ارسال میکنم و یک پاسخ معتبر از سرور دریافت میکنم.
کافیست که صفت را در کد خود وارد کنید :
[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
- ASP.net MVC
- 3k بازدید
- 12 تشکر