هکرها و تهدیدهای سایبری همیشه در حال تکامل و تغییر هستند و یکی از راههایی که برنامهها و وبسایتها را مستهلک میکنند، حملات Cross-Site Request Forgery یا همان CSRF است.
در این مطلب، با هم جزئیات، راههای جلوگیری و اقداماتی که میتوانید برای حفاظت از خودتان انجام دهید را بررسی میکنیم
جهت خرید سرور میتوانید با کارشناسان ما در میزبان کلود در ارتباط باشید.
CSRFچیست؟
CSRF یک نوع حمله جلوهای است که توسط مهاجمان با استفاده از نقاط ضعف در سیستم اجرا میشود. در این نوع حمله
یک حمله کننده (هکر) توانایی ارسال درخواستهای قابل اجرا را به وبسایت یا برنامه ای که کاربر به آن وارد شده است، به دست میآورد.
به عبارت سادهتر، هکر از نیروی اعتبار کاربر در یک وبسایت خاص بهرهمند شده و درخواستهای ناخواسته را از سوی کاربر ارسال میکند.
CSRF چگونه کار می کند؟
اینکه CSRF چگونه کار می کند؟ ،باید بگیم که فرض کنید شما وارد حساب بانکی خود شدهاید و در حال انجام یک تراکنش هستید.
اگر یک صفحه مخرب یا ایمیل مشکوک را باز کنید که حاوی کد مخرب است، این کد میتواند یک درخواست به بانک شما ارسال کند.
حالا تصور کنید که بدون اطلاع شما، یک تراکنش ناخواسته به یک حساب دیگر ارسال شود. این یک نمونه ساده از حمله CSRF است.
چرا CSRF خطرناک است؟
حملات CSRF به عنوان یکی از حملات پنهان و خطرناک به حساب میآید. دلیل اصلی این خطرات این است که کاربر برای انجام یک درخواست
بدون اینکه خودش از این اقدام آگاه باشد از اعتبارش با ورود به یک وب سایت یا برنامه استفاده میشود.
بدین معنا که حمله کننده نیازی به دزدیدن رمز عبور ندارد و فقط با استفاده از جلب اعتماد کاربر به یک وب سایت، میتواند حمله ای بی رحمانه را انجام دهد.
در بخشهای بعدی به بررسی راهکارها و راهنماییهایی که میتوانید در برابر این نوع حملات اتخاذ کنید، خواهیم پرداخت.
چگونه از CSRF جلوگیری کنیم؟
برای مقابله با حملات CSRF و حفاظت از امنیت کاربران، برخی اقدامات و راهکارها وجود دارد که هر سازمان و توسعه دهندهای باید به آنها توجه کند.
الزامات Anti-CSRF Token
استفاده از توکنهای Anti-CSRFیکی از مهمترین راهکارهای امنیتی است.این توکنها به صورت یک مقدار تصادفی به درخواستهایی که
از سوی کاربر ارسال میگردد افزوده میشوند.
این توکنها باعث میشوند که حمله کننده (هکر) برای ارسال یک درخواست مخرب، نیازمند داشتن توکن معتبر باشد که برای او امکانپذیر نیست.
محدود کردن دسترسی
تا حد امکان، تایید این که یک درخواست از طریق HTTP GET یا POST به صورت خودکار انجام شود را محدود کنید.
همچنین، به جای استفاده از متدهای GET و POST برای عملیات های مهم، از متدهای دیگر نظیر PUT و DELETE استفاده کنید.
بررسی Origin
بررسی مبدأ (Origin) در سمت سرور نیز میتواند از حملات CSRF جلوگیری کند.
با بررسی Origin در سرور پیغامی با این عنوان تأیید میکند که درخواست از یک مبدأ معتبر ارسال شده است.
حمله CSRF در واقعیت
برخی از حملات CSRF در واقعیت به صورت زیر ممکن است اتفاق بیفتد
نفوذ از طریق لینکها و ایمیلها
هکرها ممکن است از طریق لینکهای مشابه یا ایمیلهای فریبنده، کاربران را به سایتهای مخرب هدایت کنند و درخواستهای CSRF را ارسال کنند.
مهاجمان درونسازمانی
مهاجمان میتوانند با استفاده از موارد درون سازمانی، مانند فرستادن لینکهای مخرب درون شبکه داخلی، به حمله بپردازند.
الگوی توکن هماهنگساز (Synchronizer token pattern)
زمانی که یک کاربر یک صفحه وب را مشاهده میکند، مانند صفحه وب بانک که انتقال وجوه را ممکن میسازد، وبسایت بانک یک توکن تصادفی را
درون فرم جاسازی میکند. زمانی که کاربر فرم را ارسال میکند، توکن تصادفی برگشت داده میشود و بانک قادر است بررسی کند که آیا دو توکن یکسان هستند یا خیر.
اگر توکنها مطابقت داشته باشند، انتقال انجام میشود.
هکر هیچ راهی برای دسترسی به مقدار توکن تصادفی درون صفحه وب ندارد و اگر از صفحه درخواست کند
سیاست منشأ یکسان (Same Origin Policy) از حمله کننده جلوگیری میکند تا از خواندن پاسخ جلوگیری شود.
نقطه ضعف این روش در آن است که بار بررسی اعتبار توکنها با هر درخواست بر سرور افزایش مییابد. همچنین،
ممکن است مشکلاتی پیش بیاید اگر کاربر دارای چند پنجره مرورگر یا موارد دیگری باشد که منجر به تعدد درخواست از نرمافزارهای مختلف میشود.
توکن کوکی به هدر (Cookie-to-header token)
روش دیگر شامل صدور یک کوکی به مرورگر ویزیتور است که شامل یک توکن تصادفی است.
جاواسکریپت در سمت مشتری مقدار توکن را در کوکی خواهد خواند و آن را به یک هدر HTTP کپی خواهد کرد که همراه با هر درخواست ارسال میشود.
اگر یک درخواست معتبر از سوی کاربر ارسال شود، مقدار در هدر توسط سرور قابل تأیید است.
هر نمونه ی دیگری شکست خواهد خورد، که از حمله موفق جلوگیری میکند.
تا اینجای مطلب به بررسی ابتدایی حملات CSRF پرداختیم و راهکارهایی که میتوانید برای جلوگیری از این حملات در نظر بگیرید.
در بخشهای بعدی به توضیح جزئیات بیشتر و نحوه پیادهسازی این راهکارها خواهیم پرداخت.
همچنین، نکات و آموزشهایی را برای توسعه دهندگان و مدیران سیستم ارائه خواهیم داد تا بتوانند سطح امنیتی سیستم خود را بالا ببرند.
راهکارهای پیشرفته برای جلوگیری از CSRF
استفاده از SameSite Cookiesیکی از راهکارهای موثر برای جلوگیری از حملات CSRFاستفاده از SameSite Cookies است.
این ویژگی، اجازه نمیدهد که مرورگر کوکیها را به یک وبسایت دیگر ارسال کند، به طوری که اطلاعات اعتبار کاربر درخطر قرار نگیرد.
ضرورت استفاده از HTTPS
استفاده از اتصال امن HTTPS به افزایش امنیت در برابر حملات CSRF کمک میکند. از آنجایی که در اتصال HTTPS
اطلاعات بین کاربر و وبسایت به صورت رمزنگاری شده انتقال مییابد، امکان تغییر دادن اطلاعات در حین انتقال کاهش مییابد.
بررسی Referer Header
بررسی Referer Header نیز به عنوان یک راهکار امکا نپذیر برای جلوگیری از CSRF مطرح است.
این هدر نشان دهنده منبع درخواست است و با بررسی آن، سرور میتواند تصمیم بگیرد که آیا درخواست معتبر است یا خیر.
تغییر Methodهای حساس
برای عملیاتهایی که حساسیت بالایی دارند، میتوانید از متدهای دیگر نظیر PATCH یا DELETE به جای GET یا POST استفاده کنید.
این باعث کاهش احتمال اجرای درخواستهای CSRF میشود.
آموزش توسعهدهندگان
توسعه دهندگان مسئولیت دارند تا در وبسایتها و برنامههای خود، به کاربران آموزش دهند که چگونه با اطلاعات اعتبار خود برخورد کنند و به دقت لینکها و ایمیلها را بررسی کنند.
توسعهدهندگان نیز باید با راهکارها و تکنیکهای مقابله با CSRF آشنا شوند و از این راهکارها به صورت فعال در پروژههای خود استفاده کنند. همچنین،
مستندات و آموزشهای مرتبط با امنیت باید بهروز نگه داشته شوند.
جمعبندی
در این مطلب، با چالشها و راهکارهای امنیتی مرتبط با حمله CSRF آشنا شدیم. همچنین، نکات و راهکارهایی که میتوانید
در پروژهها و سایتهای خود به کار بگیرید، را بررسی کردیم.
امیدواریم که با این اطلاعات، بتوانید امنیت دیجیتال خود را بهبود بخشید و از حملات مخرب محافظت کنید.
پیشنهاد میکنم مقاله: پاکسازی مجازی ترافیک را هم مطالعه بفرمایید.
ارائه دهنده خدمات زیرساخت یکپارچه ابری