در حال بارگذاری...
بررسی ویژگیهای امنیتی Cookie شامل HttpOnly، Secure، SameSite و Domain در برنامههای وب.
اهداف این درس
Cookieها ویژگیهای امنیتی مختلفی دارند که نحوه ذخیره، ارسال و دسترسی به آنها را کنترل میکنند. تنظیم صحیح این ویژگیها برای امنیت برنامه ضروری است.
ویژگیای که از دسترسی JavaScript به Cookie جلوگیری میکند. این ویژگی از سرقت Cookie از طریق XSS محافظت میکند.
ویژگیای که تضمین میکند Cookie فقط از طریق ارتباطات HTTPS ارسال شود.
ویژگیای که تعیین میکند Cookie در درخواستهای cross-site ارسال شود یا خیر. مقادیر آن Strict، Lax و None است.
| ویژگی | هدف | مقدار توصیهشده |
|---|---|---|
| HttpOnly | جلوگیری از دسترسی JavaScript | فعال |
| Secure | ارسال فقط از طریق HTTPS | فعال |
| SameSite | جلوگیری از CSRF | Strict یا Lax |
| Domain | دامنه Cookie | محدودترین مقدار |
| Path | مسیر Cookie | محدودترین مقدار |
| Expires/Max-Age | زمان انقضا | متناسب با نیاز |
1# بررسی Cookie با curl2curl -v https://target.com 2>&1 | grep -i 'set-cookie'34# بررسی Cookie خاص5curl -v https://target.com 2>&1 | grep -i 'session'67# بررسی با مرورگر8# Developer Tools -> Application -> Cookiesهر Cookie را از نظر ویژگیهای امنیتی بررسی کنید:
تست کنید آیا JavaScript میتواند به Cookie دسترسی داشته باشد:
1// در کنسول مرورگر2console.log(document.cookie);34// اگر Session ID نمایش داده شود، HttpOnly تنظیم نشده5// اگر خطا بخورد یا خالی باشد، HttpOnly تنظیم شده| مشکل | خطر | راهحل |
|---|---|---|
| عدم HttpOnly | سرقت از طریق XSS | تنظیم HttpOnly |
| عدم Secure | ارسال از طریق HTTP | تنظیم Secure |
| SameSite=None | حمله CSRF | استفاده از Strict/Lax |
| Domain گسترده | Cookie Tossing | محدود کردن Domain |
| بدون انقضا | ماندگاری نامحدود | تنظیم Max-Age |
Cookieهای ناامن میتوانند منجر به سرقت Session، حملات CSRF، سرقت اطلاعات حساس و تصاحب حساب کاربری شوند.
1Set-Cookie: SessionID=abc123; HttpOnly; Secure; SameSite=Strict; Path=/; Max-Age=18001res.cookie('session', sessionId, {2 httpOnly: true,3 secure: true,4 sameSite: 'strict',5 path: '/',6 maxAge: 30 * 60 * 1000 // 30 دقیقه7});توصیه عملی
همیشه Cookieهای حساس مثل Session ID را با HttpOnly، Secure و SameSite=Strict تنظیم کنید. این سه ویژگی پایهایترین محافظتها را ارائه میدهند.
Cookie حاوی Session ID باید HttpOnly و Secure باشد.
SameSite=Strict بالاترین سطح محافظت را ارائه میدهد.
Domain و Path باید محدودترین مقدار ممکن را داشته باشند.
Expiration باید متناسب با نیاز برنامه تنظیم شود.
کدام ویژگی Cookie از سرقت آن از طریق XSS جلوگیری میکند؟
ویژگی HttpOnly چیست و چرا مهم است؟
HttpOnly ویژگیای است که از دسترسی JavaScript به Cookie جلوگیری میکند. این ویژگی مهم است زیرا از سرقت Cookie از طریق حملات XSS جلوگیری میکند.
ویژگی SameSite چیست و مقادیر آن کدامند؟
SameSite تعیین میکند Cookie در درخواستهای cross-site ارسال شود یا خیر. مقادیر آن Strict (هرگز ارسال نشود)، Lax (فقط در درخواستهای GET ارسال شود) و None (همیشه ارسال شود، نیاز به Secure) است.
چرا Cookie نباید اطلاعات حساس ذخیره کند؟
زیرا Cookieها در مرورگر کاربر ذخیره میشوند و ممکن است توسط افزونهها، بدافزارها یا حملات XSS قابل دسترسی باشند. همچنین Cookieها در هر درخواست ارسال میشوند و ممکن است در ترافیک شبکه فاش شوند.