من در حال حاضر در حال ساختن یک برنامه وب (و سرانجام ، یک برنامه موبایل ترکیبی نیز هستم) که از طریق یک API RESTful که ساخته ام هدایت می شود. احراز هویت کاربر در API از طریق نشانه های وب JSON (که در هدر Bearer از طریق HTTPS منتقل می شود) انجام می شود.

اما ، از آنجا که مجوز! = احراز هویت ، من در حال فکر کردن در مورد چگونگی کاهش موثر حملات CSRF بر روی برنامه بود. JWT که توسط نقطه انتهایی / auth / login API برگردانده می شود ، در یک کوکی در دامنه برنامه ذخیره می شود و برای درخواست های بعدی AJAX به API استفاده می شود.

از آنجا که ما از یک کوکی برای ذخیره نشانه احراز هویت استفاده می کنیم ، معتقدم که این مورد برای CSRF باز است ، حتی اگر تمام درخواست های API از داخل برنامه از طریق AJAX انجام شود (بدون نمایش مستقیم از فرم ها و غیره)

یکی از راه حل هایی که من با آن ارائه کردم این است که با هر درخواستی که به API ارائه می شود ، یک نشانه CSRF تولید کنید و با پرداخت هزینه آن را برگردانید. این CSRF سپس در داخل برنامه (متغیر Javascript) ذخیره می شود و با درخواست بعدی ارسال می شود ، در آنجا می تواند در API بررسی و مجاز شود. سوال من این است: آیا این برای جلوگیری از حملات CSRF در سراسر وب و برنامه ترکیبی موبایل کافی است؟ یا غیر ضروری است؟

سوال من تا حدودی به این سوال مشابه است ، اما تفاوت خاصی دارد.