הגדרת הגנת CSRF: טוקנים, עוגיות SameSite, אימות

האתר שלך עלול להיות חשוף להתקפות CSRF, כאשר משתמש מורשה שולח בטעות בקשה זדונית. אנו מגדירים הגנה מקיפה באמצעות tokens ופרמטרים תקינים של SameSite cookies. הצוות שלנו מספק את הפרויקט במתכונת turnkey, ומבטיח אבטחה אמינה עם תמיכה מתמשכת.

פיתוח ותחזוקה של כל סוגי האתרים:

אתרי מידע או יישומי אינטרנט
אתרי תדמית, דפי נחיתה, אתרי חברה, קטלוגים מקוונים, חידונים, אתרי קידום, בלוגים, מקורות חדשות, פורטלי מידע, פורומים, אגרגטורים
אתרי מסחר אלקטרוני או יישומי אינטרנט
חנויות מקוונות, פורטלי B2B, שווקים, בורסות מקוונות, אתרי קאשבק, בורסות, פלטפורמות דרופשיפינג, מנתחי מוצרים
יישומי אינטרנט לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, פורטלים ארגוניים, מערכות ניהול ייצור, מנתחי מידע
אתרי שירות אלקטרוני או יישומי אינטרנט
פלטפורמות מודעות, בתי ספר מקוונים, בתי קולנוע מקוונים, בוני אתרים, פורטלים לשירותים אלקטרוניים, פלטפורמות אירוח וידאו, פורטלים נושאיים

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

השירותים שאנו מציעים
מציג 1 מתוך 1כל 2062 השירותים
הגדרת הגנת CSRF: טוקנים, עוגיות SameSite, אימות
בינוני
~1 יום

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אתר חברה B2B ADVANCE
    פיתוח אתר חברה B2B ADVANCE
    1502
  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1344
  • פיתוח אתר עבור BELFINGROUP
    פיתוח אתר עבור BELFINGROUP
    1052
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1306
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1049
  • פיתוח אתר לחברת FIXPER
    פיתוח אתר לחברת FIXPER
    1033

תארו לעצמכם: האתר שלכם משתמש בקוקיות סשן, ומשתמש מאומת עוקב אחרי קישור לאתר זדוני. אותו אתר שולח בקשת POST לשינוי סיסמה — וללא אסימוני CSRF, הבקשה עוברת. פגיעות זו היא חלק מOWASP Top 10, ולפי סטטיסטיקות, עד 70% מהפרויקטים הישנים אינם מוגנים כלל. אנו נתקלים בכאב זה לעיתים קרובות בפרויקטים שבהם ההגנה חסרה או מיושמת באופן לא עקבי. לצוות שלנו יש ניסיון של למעלה מ-10 שנים באבטחת אינטרנט, עם ביצוע של למעלה מ-50 ביקורות והטמעות CSRF. המשימה שלנו היא לסגור פגיעות זו לצמיתות במפתח פתוח, עם אחריות ותיעוד.

בעיות שאנו פותרים

  • קוקיות סשן מצורפות אוטומטית על ידי הדפדפן — תוקף צריך רק להציג לקורבן טופס בדומיין שלו. עד 70% מהאתרים על מסגרות עבודה מיושנות (למשל, PHP ללא מסגרת עבודה) אינם מוגנים כלל.
  • הגדרת SameSite שגויה של קוקיות — מפתחים רבים מגדירים None לנוחות, ופותחים דלת ל-CSRF. אנו מתקנים זאת ובוחרים בין Lax ל-Strict תוך התחשבות בחוויית המשתמש.
  • בקשות AJAX נשכחות — יישומי SPA פגיעים אם אסימוני CSRF לא מועברים בכותרת. אנו מגדירים העברה אוטומטית עבור Axios, Fetch, jQuery.

איך אנחנו עושים זאת: מקרה בוחן של Laravel Sanctum עבור SPA

נבחן פרויקט טיפוסי: חזית React על Next.js, צד שרת על Laravel עם Sanctum. הלקוח מתלונן על שגיאות 419 בעת שליחת טפסים. הבעיה: Sanctum משתמש בתבנית Double Submit Cookie, אך החזית לא קראה את קוקיית XSRF-TOKEN.

פתרון:

  1. ב-Laravel config/sanctum.php, ציינו 'stateful' עם דומיינים של לקוחות.
  2. בחזית, הגדירו axios.defaults.withCredentials = true.
  3. קראו את XSRF-TOKEN מהקוקייה והעבירו אותה בכותרת X-XSRF-TOKEN:
// Axios interceptor
axios.interceptors.request.use(config => {
  const token = document.cookie
    .split('; ')
    .find(row => row.startsWith('XSRF-TOKEN='))
    ?.split('=')[1];
  if (token) {
    config.headers['X-XSRF-TOKEN'] = token;
  }
  return config;
});

תוצאה — שגיאות 419 נעלמו, האבטחה מובטחת. כל התהליך ארך יומיים, כולל בדיקות.

תהליך העבודה

  1. ניתוח — ביקורת על הארכיטקטורה הנוכחית: אימות סשן או אסימון, אילו טפסים ונקודות קצה של API יש להגן.
  2. עיצוב — בחירת שיטות: אסימוני CSRF, SameSite, Double Submit, או שילוב. קביעת חריגים (webhooks).
  3. הטמעה — פריסה בצד השרת (middleware, יצירת אסימונים) ובחזית (הגדרות גלובליות של לקוח HTTP).
  4. בדיקות — יצירת דף זדוני, אימות חסימת בקשות, בדיקות אוטומטיות.
  5. פריסה — פריסה לסביבת staging, בדיקה, ניטור אחר שגיאות 419/403.

מה כלול בהתקנה במפתח פתוח

  • שילוב הגנת CSRF לכל הבקשות המשנות (POST, PUT, DELETE).
  • הגדרת קוקיית SameSite עם ערך אופטימלי.
  • טיפול בחריגים (Stripe, GitHub webhooks) עם אימות חלופי.
  • תמיכה ב-SPA (Sanctum, JWT) ובטפסים קלאסיים.
  • תיעוד תפעולי והדרכת צוות.
  • חודש של תמיכה לאחר ההשקה.

לוחות זמנים ועלות משוערים

סוג משימה זמן עלות
התקנה בסיסית על Laravel/Django/Rails יום אחד $500
שילוב עם SPA קיים (Sanctum/XSRF) 1–2 ימים $800
ביקורת ותיקון פרויקט ישן 2–5 ימים $1500+

העלות מחושבת באופן אישי לפי המחסן הטכנולוגי וההיקף שלכם. אנו מעריכים את הפרויקט תוך יום אחד — צרו קשר לייעוץ. התקנת CSRF בסיסית מתחילה מ-$500, וחוסכת פוטנציאלית $100k+ בעלויות פריצה.

בחירה בין SameSite=Lax ל-Strict

// Axios interceptor axios.interceptors.request.use(config => { const token = document.cookie .split('; ') .find(row => row.startsWith('XSRF-TOKEN=')) ?.split('=')[1]; if (token) { config.headers['X-XSRF-TOKEN'] = token; } return config; }); אינו שולח קוקיות בבקשות חוצות-אתר כלשהן — זה מאובטח אך שובר ניווט מקישורים חיצוניים (למשל, דוא"ל). SameSite=Strict מאפשר שליחה בניווטי GET, חוסם POST, וזו פשרה.

ערך אבטחה חוויית משתמש
SameSite=Lax 99% שובר ניווט
Strict 95% שומר על חוויית המשתמש

הניסיון שלנו (למעלה מעשר שנות הטמעה) מראה ש-Lax הוא הבחירה עבור 80% מהפרויקטים. גישת שילוב אסימון + SameSite יעילה ב-99.9%, לעומת 95% עבור SameSite בלבד. אם נדרשת אבטחה מקסימלית, אנו משתמשים ב-Lax עם דף נחיתה לקישורים חיצוניים.

הגנה על בקשות AJAX מפני CSRF

טעות אופיינית: האסימון אינו מתחדש לאחר התחברות או פג לפני הסשן. בדקו:

  • תגית meta נוצרת ב-Blade (או מקבילה) בעת טעינת הדף.
  • עבור SPA, יש לחדש את האסימון דרך קוקיית XSRF-TOKEN (Sanctum) או נקודת קצה נפרדת.
  • אם משתמשים ב-Strict בטפסים, ודאו שהם לא נשמרים במטמון.
דוגמה מפורטת: הגדרה עבור React + Laravel

ברכיב React, הוסיפו hook בשם @csrf לקריאה והגדרת האסימון:

import axios from 'axios';

function App() {
  useEffect(() => {
    axios.get('/sanctum/csrf-cookie').then(() => {
      // токен уже в cookie XSRF-TOKEN
    });
  }, []);

  const handleSubmit = async () => {
    await axios.post('/api/form', data);
  };
}

ודאו שהשרת שולח את הכותרת useEffect.

בדיקת Origin/Referer נוספת

גם עם אסימונים, אנו מוסיפים בדיקת כותרת import axios from 'axios'; function App() { useEffect(() => { axios.get('/sanctum/csrf-cookie').then(() => { // токен уже в cookie XSRF-TOKEN }); }, []); const handleSubmit = async () => { await axios.post('/api/form', data); }; } ברמת ה-middleware. זוהי הגנה לעומק — אם האסימון דולף, תוקף לא יכול לזייף את ה-Origin.

public function handle($request, Closure $next) {
    $origin = $request->header('Origin');
    if ($request->isMethod('POST') && $origin && !in_array($origin, $allowed)) {
        abort(403, 'Forbidden origin');
    }
    return $next($request);
}

למה שילוב שיטות אמין יותר משיטה אחת?

לפי סטטיסטיקות, אתרים עם הגנת SameSite בלבד פגיעים ב-5% מהמקרים (התקפות תת-דומיין). אסימונים מכסים את אותם 5%. על ידי שילוב שתי הגישות, אנו מבטיחים הגנה ברמת OWASP Top 10. בנוסף, שימוש באסימונים אקראיים מאובטחים קריפטוגרפית לכל סשן מבטיח שלא ניתן לנחש את האסימון. מדריך זה משפר את אבטחת האינטרנט על ידי הטמעת הגנת CSRF. מניעת התקפות CSRF חיונית לכל יישום אינטרנט. הגדרת CSRF ב-Laravel מפושטת עם Sanctum. תבנית Double Submit Cookie עובדת עבור API חסרי מצב. תכונת SameSite Lax חוסמת את רוב הבקשות חוצות-האתר. הזמינו ביקורת אבטחה לאתר שלכם — נמצא ונתקן פגיעויות CSRF תוך יום אחד. קבלו ייעוץ לבחירת אסטרטגיית הגנה אופטימלית.

רשימת בדיקה לטעויות הגדרה אופייניות

  • שימוש ב-Set-Cookie: XSRF-TOKEN=...; SameSite=Lax ללא HTTPS — הקוקייה לא תישלח.
  • שכחת חידוש האסימון לאחר שינוי סיסמה או התנתקות.
  • החרגה מבדיקה לא רק של GET אלא גם של HEAD (צריך להיות בטוח).
  • אי בדיקת כותרת Origin כאשר קיים אסימון CSRF.