CSRF و جلوگیری از خطای TokenMismatchException هنگام logout در لاراول

  • 44 بازدید
  • CSRF و جلوگیری از خطای TokenMismatchException هنگام logout در لاراول

    CSRF مخفف عبارت  Cross-Site Request Forgery  به معنی درخواست جعلی که از سایت دیگر می آید می باشد.

    لاراول برای جلو گیری از حملات CSRF کار را راحت کرده است. برای این منظور لاراول برای هر کاربر لاگین کرده یک رشته ی تصادفی (token) ایجاد می کند تا به وسیله آن بتواند تشخیص دهد که آیا کاربری درخواست ارسال می کند همان کاربری است که لاگین کرده یا خیر.

    هر گاه فرمی را در پروژه لاراولی ایجاد می کنید باید با استفاده از csrf@ یک فیلد برای csrf_token ایجاد کنید تا درخواستی که به سرور می فرستید اعتبار سنجی شود.

    رشته ی ایجاد شده دارای یک مدت زمان انقضا می باشد و اگر از زمان انقضای token بگذرد یا با خطای TokenMissmatchException مواجه می شوید یا از شما درخواست می شود که صفحه را دوباره بارگذاری کنید و سپس درخواست خود را ارسال کنید.

    اگر مدت زیادی در یک صفحه که شامل فرم می باشد بمانید، اگر بخواهید فرم را پر کرده و ارسال کنید ممکن است با خطای  TokenMissmatchException  مواجه شوید زیرا CSRF Token سمت سرور تغییر کرده است. این اتفاق ممکن است هنگام logout  هم اتفاق بیفتد (زیرا برای logout هم باید از فرم استفاده کرد) و این مورد خوشایند نیست. چگونه از بروز این مشکل جلوگیری کنیم؟

    برای جلوگیری از این خطا باید در فایل  app/Http/Middleware/VerifyCsrfToken.php در آرایه ی except آدرس هایی که می خواهیم شامل Csrf Protection نباشند را وارد کنیم.

    بنابراین باید logout را به این آرایه اضافه کنیم:

    دقت داشته باشید که CSRF Protection یک سرویس امنیتی خیلی مهم است پس نباید هر آدرسی را در except وارد کنیم. اگر شما آدرس هایی را که به وسیله ی آنها با پایگاه داده تعامل دارند را در except وارد کنید راه را برای هکرها باز گذاشته اید تا با شناسایی این آدرس ها پایگاه داده شما را مورد حمله قرار دهند.

    ارسال دیدگاه

    نشانی ایمیل شما منتشر نخواهد شد.

    This site uses Akismet to reduce spam. Learn how your comment data is processed.

    سئوال دارید؟ کارشناسان ما همواره پاسخگوی شما هستند.

       ارتباط از طریق نرم افزار پیام رسان واتس آپ