عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن .و کاربرانی که دوره کامل آموزش laravel را دنبال می کنند. مباحث این جلسه از دوره آموزش فریم ورک لاراول را به کنترل حفاظت CSRF در لاراول CSRF به Cross Site حمله های جعلی به برنامه های کاربردی وب اشاره دارد. حملات CSRF فعالیت های غیر مجاز است که کاربران معتبر سیستم انجام می دهند.به این ترتیب، بسیاری از برنامه های کاربردی وب مستعد این حملات هستند. Laravel محافظت CSRF را به روش زیر ارائه می دهد:
Laravel شامل یک CSRF ساخته شده است که برای هر جلسه فعال کاربر نشانه ایجاد می کند.
این نشانه ها تحقیق می کنند که عملیات یا درخواست هایی که توسط کاربر ارسال شده تأیید شده یا نه.
در ادامه ی مباحث جاری به طور خلاصه به بحث پیاده سازی و کنترل حفاظت CSRF در لاراول پرداخته ایم.
پیاده سازی محافظت CSRF در Laravel در این بخش به طور دقیق مورد بحث قرار می گیرد.
قبل از ادامه در مورد حفاظت از CSRF نکات زیر قابل توجه است.
CSRF در قالب های HTML که در داخل برنامه های وب بیان شده است، اجرا می شود.
شما باید یک نماد CSRF معتبر پنهان را در فرم وارد کنید تا میان افزار حفاظت CSRF از Laravel بتواند درخواست را تأیید کند.
همانطور که در زیر نشان داده شده است.
1 2 3 4 | <form method = "POST" action="/profile"> {{ csrf_field() }} ... </form> |
شما به راحتی می توانید برنامه های کاربردی Java Script را با استفاده از کتابخانه Java script HTTP ایجاد کنید، زیرا این شامل نشانگر CSRF برای هر درخواست خروجی است.
این پرونده یعنی resources / assets / js / bootstrap.js تمامی نشانه ها را برای برنامه های Laravel ثبت می کند و شامل متا تگ است که csrf-token را با کتابخانه Axisse Http ذخیره می کند.
خطوط کد زیر را در نظر بگیرید. آنها یک فرم را نشان می دهند که دو پارامتر را به عنوان ورودی می گیرد:
ایمیل و پیام.
1 2 3 4 5 6 7 | <form> <label> Email </label> <input type = "text" name = "email"/> <br/> <label> Message </label> <input type="text" name = "message"/> <input type = ”submit” name = ”submitButton” value = ”submit”> </form> |
نتیجه کد بالا، فرم زیر است که کاربر نهایی می تواند مشاهده کند.
شکل نشان داده شده در بالا هر اطلاعات ورودی از یک کاربر مجاز را می پذیرد. این ممکن است برنامه وب را مستعد حملات CSRF مختلف کند.
لطفا توجه داشته باشید که دکمه ارسال شامل عملکرد در بخش کنترل است.
کار postContact در کنترل کننده ها برای نمایش های مرتبط استفاده می شود که در زیر نشان داده شده است.
1 2 3 | public function postContact(Request $request) { return $request-> all(); } |
توجه داشته باشید که این فرم هیچ نشانه CSRF را شامل نمی شود، بنابراین اطلاعات حساس به اشتراک گذاشته شده به عنوان پارامترهای ورودی مستعد ابتلا به حملات مختلف هستند.
فرم دوباره طراحی شده، با استفاده از نشانه های CSRF در خطوط کد زیر نمایان است.
1 2 3 4 5 6 7 8 9 | <form method = ”post” > {{ csrf_field() }} <label> Email </label> <input type = "text" name = "email"/> <br/> <label> Message </label> <input type = "text" name = "message"/> <input type = ”submit” name = ”submitButton” value = ”submit”> </form> |
خروجی به دست آمده JSON را با یک نشانه به عنوان زیر ارائه می دهد.
1 2 3 4 5 | { "token": "ghfleifxDSUYEW9WE67877CXNVFJKL", "name": "TutorialsPoint", "email": "contact@tutorialspoint.com" } |
با کلیک کردن روی دکمه ارسال نشانه CSRF نمایان میشود.
به حمله هایی که از طریق درخواستهای متقابل جعلی، به سایت صورت میگیرد. حملات CSRF فعالیت های غیر مجازی است که کاربرانِ معتبرِ سیستم (authenticated users) انجام می دهند.به همین ترتیب، بسیاری از برنامه های کاربردی وب، مستعد ابتلا به این حملات هستند.
موفق باشید.