نبرد کوکیها: کوکیهای معمولی در مقابل فقط HTTP – انجمن DEV 👩💻👨💻

کوکی ها تکنیک رایجی هستند که توسط توسعه دهندگان وب برای ذخیره اطلاعات در رایانه مشتری و حفظ وضعیت جلسه بین درخواست های HTTP استفاده می شود. با این حال، انواع مختلفی از کوکیها وجود دارد که توسعهدهندگان میتوانند از آنها استفاده کنند، ما دو مورد از آنها، کوکیهای معمولی و کوکیهای فقط HTTP را پوشش میدهیم. در این مقاله، تفاوتهای بین این دو رویکرد، جایی که کوکیها ذخیره میشوند، حملات متداول به هر رویکرد، و نحوه کاهش این حملات را مورد بحث قرار خواهیم داد.
کوکی های معمولی
کوکیهای معمولی (یا فقط کوکیها) کوکیهایی هستند که توسط اسکریپتهای سمت سرویس گیرنده، مانند جاوا اسکریپت، قابل دسترسی هستند. کوکیهای معمولی معمولاً برای ذخیره تنظیمات برگزیده کاربر، ردیابی رفتار کاربر و حفظ وضعیت جلسه بین درخواستهای HTTP استفاده میشوند.
کوکی های معمولی کجا ذخیره می شوند؟
کوکیها در فضای ذخیرهسازی کوکی مرورگر ذخیره میشوند که توسط اسکریپتهای سمت سرویس گیرنده قابل دسترسی و تغییر هستند.
حملات متداول به کوکی های معمولی
حملات اسکریپت بین سایتی (XSS): در یک حمله XSS، یک اسکریپت مخرب به یک صفحه وب تزریق می شود، که سپس در زمینه مرورگر قربانی اجرا می شود. اگر اسکریپت بتواند به کوکیهای معمولی دسترسی داشته باشد، میتواند اطلاعات حساسی مانند شناسههای جلسه یا نشانههای احراز هویت را بدزدد.
حملات جعل درخواست متقابل (CSRF): در یک حمله CSRF، قربانی فریب داده میشود تا روی پیوندی کلیک کند یا فرمی را ارسال کند که بدون اطلاع یا رضایت او اقدامی را روی یک برنامه وب انجام میدهد. اگر برنامه برای احراز هویت یا مدیریت جلسه به کوکیهای معمولی متکی باشد، مهاجم میتواند از کوکیهای قربانی برای انجام حمله استفاده کند.
کوکی های معمولی چگونه کار می کنند؟
کوکی های معمولی با تنظیم یک کوکی در رایانه مشتری هنگام بارگیری یک صفحه وب کار می کنند. سپس کوکی با هر درخواست HTTP بعدی به سرور ارسال میشود و به سرور اجازه میدهد وضعیت جلسه را حفظ کرده و رفتار کاربر را ردیابی کند.
چگونه حملات به کوکی های معمولی را کاهش دهیم
برای کاهش حملات به کوکیهای معمولی، توسعهدهندگان باید بهترین شیوههای زیر را اجرا کنند:
- پاکسازی ورودی کاربر: برنامه های کاربردی وب همیشه باید ورودی کاربر را اعتبارسنجی و پاکسازی کنند تا از حملات XSS جلوگیری شود.
- از کوکی های امن استفاده کنید: کوکیها باید بهعنوان «امن» علامتگذاری شوند تا اطمینان حاصل شود که فقط میتوانند از طریق HTTPS منتقل شوند، که به جلوگیری از حملات مبتنی بر شبکه کمک میکند.
- از کوکی های فقط HTTP استفاده کنید: کوکیهای فقط HTTP توسط اسکریپتهای سمت سرویس گیرنده قابل دسترسی نیستند، که باعث میشود در برابر انواع خاصی از حملات مانند XSS ایمنتر شوند.
کوکی های فقط HTTP
کوکیهای فقط HTTP کوکیهایی هستند که هنگام تنظیم با پرچم «HttpOnly» در سرصفحههای پاسخ علامتگذاری میشوند. این پرچم به مرورگر نشان می دهد که کوکی از طریق اسکریپت های سمت سرویس گیرنده مانند جاوا اسکریپت قابل دسترسی نیست و در مقابل انواع خاصی از حملات مانند XSS ایمن تر می شود.
کوکیهای فقط HTTP کجا ذخیره میشوند؟
کوکیهای فقط HTTP در همان مکان کوکیهای معمولی ذخیره میشوند، که معمولاً محل ذخیره کوکی مرورگر است. با این حال، از آنجایی که کوکیهای فقط HTTP توسط اسکریپتهای سمت کلاینت قابل دسترسی نیستند، از طریق جاوا اسکریپت یا سایر زبانهای برنامهنویسی سمت کلاینت قابل دسترسی نیستند. در عوض، آنها فقط با هر درخواست HTTP به سرور ارسال می شوند.
حملات متداول به کوکی های فقط HTTP
اگرچه کوکیهای فقط HTTP برای اسکریپتهای سمت سرویس گیرنده قابل دسترسی نیستند، اما همچنان در برابر حملاتی که از آسیبپذیریهای خود مرورگر سوء استفاده میکنند، مانند حملات XSS یا CSRF آسیبپذیر هستند.
کوکی های فقط HTTP چگونه کار می کنند؟
کوکیهای فقط HTTP مانند کوکیهای معمولی کار میکنند، اما وقتی تنظیم میشوند با پرچم «HttpOnly» در سرصفحههای پاسخ مشخص میشوند. این پرچم به مرورگر نشان می دهد که کوکی از طریق اسکریپت های سمت سرویس گیرنده مانند جاوا اسکریپت قابل دسترسی نیست و در مقابل انواع خاصی از حملات مانند XSS ایمن تر می شود.
چگونه حملات به کوکیهای فقط HTTP را کاهش دهیم
برای کاهش حملات به کوکیهای فقط HTTP، توسعهدهندگان باید بهترین شیوههای زیر را اجرا کنند:
- از کوکی های امن استفاده کنید: کوکیها باید بهعنوان «امن» علامتگذاری شوند تا اطمینان حاصل شود که فقط میتوانند از طریق HTTPS منتقل شوند، که به جلوگیری از حملات مبتنی بر شبکه کمک میکند.
- از توکن های CSRF استفاده کنید: برای جلوگیری از حملات CSRF، برنامههای کاربردی وب باید از نشانههای CSRF استفاده کنند تا اطمینان حاصل شود که درخواستها فقط توسط کاربری ارسال میشود که در ابتدا فرم را ارسال کرده است.
- محدود کردن دامنه کوکی: توسعهدهندگان باید دامنه کوکیها را به حداقل لازم برای مدیریت جلسه و احراز هویت محدود کنند و از ذخیره اطلاعات حساس مانند رمزهای عبور یا جزئیات کارت اعتباری در کوکیها خودداری کنند.
- اجرای کنترل دسترسی مناسب: برنامه های کاربردی وب باید کنترل دسترسی مناسب را برای جلوگیری از دسترسی غیرمجاز به داده ها یا عملکردهای حساس اجرا کنند.
در نتیجه، هم کوکیهای معمولی و هم کوکیهای فقط HTTP، تکنیکهای مفیدی برای حفظ وضعیت جلسه بین درخواستهای HTTP هستند. با این حال، کوکیهای معمولی میتوانند در برابر حملات سمت سرویس گیرنده مانند XSS و CSRF آسیبپذیر باشند، در حالی که کوکیهای فقط HTTP در برابر این نوع حملات ایمنتر هستند. توسعهدهندگان باید از ترکیبی از تکنیکهایی مانند اعتبارسنجی ورودی، کوکیهای ایمن، توکنهای CSRF و کنترل دسترسی مناسب برای کاهش حملات به کوکیها و تضمین امنیت برنامههای کاربردی وب خود استفاده کنند.