מדריך · 3 דקות קריאה

Secure,‏ HttpOnly ו־SameSite: תיקון דגלי העוגיות

בקצרה: לעוגיות של סשן ושל התחברות צריכים להיות Secure (נשלחות רק ב־HTTPS), HttpOnly (לא קריאות ל־JavaScript, מה שמגביל את הנזק מ־XSS) ו־SameSite=Lax או Strict (לא נשלחות ברוב הבקשות בין אתרים, מה שעוזר נגד CSRF). הגדירו אותם במקום שבו העוגייה נוצרת, או הוסיפו אותם בשרת האינטרנט כגיבוי.

עודכן ב־ · HackGrade

הקוד וההגדרות נשארים באנגלית.

ראו מה האתר שלכם שולח

Terminal
curl -sI https://yourdomain.com | grep -i '^set-cookie'

סשנים ב־PHP

php.ini
session.cookie_secure = 1
session.cookie_httponly = 1
session.cookie_samesite = "Lax"
PHP 7.3+
setcookie('name', $value, [
    'expires'  => time() + 3600,
    'path'     => '/',
    'secure'   => true,
    'httponly' => true,
    'samesite' => 'Lax',
]);

וורדפרס

עוגיות ההתחברות של וורדפרס כבר מוגדרות HttpOnly. ודאו שממשק הניהול עובד רק ב־HTTPS כדי שהן יהיו גם Secure:

wp-config.php
define( 'FORCE_SSL_ADMIN', true );

עוגיות שתוספים מגדירים תלויות בכל תוסף. אם לאחת מהן חסרים דגלים, בדקו אם יש עדכון או השתמשו בפתרון הגיבוי בשרת שמופיע למטה.

nginx (כ־reverse proxy)

nginx 1.19.3+
proxy_cookie_flags ~ secure httponly samesite=lax;

Apache

Apache mod_headers
Header edit Set-Cookie "^((?!.*;\s*Secure).*)$" "$1; Secure"
Header edit Set-Cookie "^((?!.*;\s*HttpOnly).*)$" "$1; HttpOnly"
Header edit Set-Cookie "^((?!.*;\s*SameSite).*)$" "$1; SameSite=Lax"

אם העוגיות מגיעות מ־backend שעובר דרך proxy (למשל PHP-FPM מאחורי ProxyPass) ושום דבר לא משתנה, השתמשו ב־Header always edit במקום.

לא לשבור דברים

  • עוגיות שה־JavaScript שלכם חייב לקרוא (חלק מבאנרי ההסכמה, בדיקות A/B) לא יכולות להיות HttpOnly.
  • צריך SameSite=None לעוגיות שמשמשות בתוך iframe של צד שלישי, והוא מחייב Secure.
  • SameSite=Strict יכול לנתק משתמשים כשהם מגיעים מקישור בדוא״ל. Lax היא ברירת המחדל הבטוחה יותר.

שאלות נפוצות

האם עוגיות אנליטיקה צריכות את הדגלים האלה?

Secure כן, באתר HTTPS. ‏HttpOnly רק אם אף סקריפט לא צריך לקרוא אותן, וזה נדיר באנליטיקה.

האם SameSite=Lax מספיק נגד CSRF?

הוא חוסם את רוב שליחות הטפסים בין אתרים, אבל טפסים שמשנים נתונים צריכים עדיין טוקני CSRF.

למה סורק עדיין מדווח על דגל חסר אחרי התיקון?

לעתים קרובות מטמון דפים או CDN מגישים את התגובה הישנה, או שתוסף מגדיר עוגייה משלו. נקו את המטמון ובדקו שוב את שורות ה־Set-Cookie.

מקורות

מדריכים קשורים

חינם · מיידי · בלי הרשמה

גלו את הציון שלכם לפני שמישהו אחר יגלה.

סריקה פסיבית בלבד. שום בדיקה חודרנית לא מתבצעת בלי האישור שלכם.

מתחילים בחינם. תוכניות בתשלום מ־12$ לחודש, או דוח חד־פעמי ב־29$. למחירים