הגדרה
הגבלת קצב היא בקרת ניהול תעבורה האוכפת גבול עליון על תדירות שבה לקוח יכול לבצע פעולה מסוימת בתוך חלון זמן מוגדר. כאשר לקוח חורג מהסף, השרת מגיב עם שגיאה — בדרך כלל HTTP 429 Too Many Requests — או מבטל בשקט את הבקשות העודפות. חלון הזמן מתאפס בלוח זמנים קבוע (מונה “חלון קבוע”) או על בסיס מתגלגל (מונה “חלון מחליק”), כאשר חלונות מחליקים מספקים אכיפה חלקה יותר המונעת ניצול התפרצות בגבולות חלון.
הגבלת קצב היא אחת מבקרות אבטחת האינטרנט הוותיקות ביותר ושנפרסה באופן אוניברסלי ביותר. OWASP (פרויקט אבטחת יישומי אינטרנט פתוח) ממליץ עליה כהגנה עיקרית מפני התקפות כוח גס, מילוי אישורים וניצול לרעה אוטומטי של טפסים. Cloudflare מציעה הגבלת קצב כתכונה של מוצר ה-WAF שלה, עם כללים הניתנים להגדרה לפי נתיב URL, שיטת HTTP, כתובת IP, ערך עוגייה וכותרת בקשה. AWS WAF, Azure Front Door ו-Google Cloud Armor מספקים יכולות שוות ערך.
כיצד הגבלת קצב פועלת
מגביל קצב מתחזק מונה עבור כל מזהה לקוח ייחודי — בדרך כלל כתובת ה-IP של המקור, אך לפעמים מזהה חשבון, מפתח API או עוגיית מפגש. כאשר בקשה מגיעה, השרת בודק את ערך המונה הנוכחי עבור אותו מזהה. אם המונה מתחת לסף, הבקשה מותרת והמונה מתעלה. אם המונה בסף או מעליו, הבקשה נדחית עם תגובת 429 או מטופלת בהתאם למדיניות המוגדרת.
אחסון מונה מיושם בדרך כלל ב-Redis או Memcached כדי לאפשר חיפושים מהירים ומבוזרים על פני מופעי שרת מרובים — דרישה ליישומים בקנה מידה אופקי. תיעוד Cloudflare מתאר אכיפת הגבלת קצב ברמת רשת הקצה, שבה כללים מיושמים לפני שבקשות מגיעות לשרת המקור, ומפיצים את הפחתת העומס על פני התשתית הגלובלית של Cloudflare.
פרמטרי הגבלת קצב נפוצים בהקשר תחרות כוללים:
- הצבעות לכל IP לכל חלון זמן: התצורה הנפוצה ביותר. דוגמה: לא יותר מהצבעה אחת לכל כתובת IP לכל חלון של 24 שעות.
- הצבעות לכל חשבון לכל תחרות: נאכפת בשכבת היישום באמצעות מזהה החשבון של המשתמש המאומת כמפתח.
- רישומים לכל IP לכל שעה: מיושם בנקודת קצה של יצירת חשבון להאטת חוות חשבונות מונעות בוטים.
- קריאות API לכל טוקן לדקה: רלוונטי לפלטפורמות תחרות החושפות API הצבעה ציבורי.
הגבלת קצב יכולה גם להיות מיושמת באופן הסתברותי — למשל, החלת הגבלות מחמירות יותר על בקשות המגיעות עם אותות התנהגותיים או טביעת אצבע המעידים על אוטומציה, תוך החלת הגבלות רופפות יותר על מפגשים עם אינדיקטורים אנושיים בעלי ביטחון גבוה.
היכן אתם נתקלים בכך
הגבלת קצב היא בקרה רחבת תפוצה הקיימת כמעט בכל פלטפורמת אינטרנט. מפעילי תחרויות נתקלים בה בצורה הישירה ביותר בשלוש נקודות: נקודת הקצה של הגשת ההצבעה, טופס רישום החשבון, ו(אם נדרש אישור דוא״ל) צנרת שליחת הדוא״ל. אינטגרציות תחרות מונעות API נתקלות בהגבלות קצב בנקודות הקצה של ה-API של הפלטפורמה.
עבור משתמשי קצה, הגבלת קצב מתבטאת בצורה הגלויה ביותר כשגיאת HTTP 429 או הודעה ספציפית לפלטפורמה כגון “כבר הצבעת” או “אנא המתן לפני שתצביע שוב”. פלטפורמות רבות מיישמות הגבלת קצב רכה — קבלת הבקשה אך השלכתה בשקט של הכפיל — כדי להימנע מאיתות על קיום הבקרה למנצלים פוטנציאליים.
תיעוד הגבלת הקצב של WAF של Cloudflare מציין שכללי הגבלת קצב יכולים להיות מוגדרים לרישום ביומן ללא חסימה במהלך שלב ניתוח, ואז הועברו לחסימה ברגע שהסף המתאים מכויל. גישה דו-שלבית זו עוזרת למפעילי תחרויות להימנע מחסימה לא מכוונת של גלי הצבעה לגיטימיים.
דוגמאות מעשיות
תחרות פרסים של בלוגרים אוכל מגדירה את מערכת ההצבעה שלה עם הגבלת קצב לפי IP של 24 שעות. במהלך השבוע האחרון של התחרות, מצביע מנסה להגיש 50 הצבעות ברצף מהיר מאותה כתובת IP ביתית. ההצבעה הראשונה מתקבלת; 49 הבקשות הבאות מקבלות תגובת 429. דפדפן המצביע מציג הודעה המסבירה את ההגבלה של פעם ביום.
פלטפורמת תחרות SaaS המארחת מאות תחרויות סימולטניות משתמשת בהגבלת הקצב של Cloudflare ברשת הקצה. בוט המכוון לתחרות אחת עם 10,000 בקשות לדקה מצומצם למקסימום של 60 בקשות לדקה בקצה, כאשר הבקשות העודפות לעולם לא מגיעות לשרת המקור. יומני שרת המקור מציגים רק את התעבורה המצומצמת, ושימוש ה-CPU בצד השרת נשאר לא מושפע.
סקירת אבטחה של OWASP של מיקרו-אתר תחרות מותאם אישית של סטארטאפ מזהה את היעדר הגבלת קצב בנקודת הקצה של שליחה מחדש של אישור דוא״ל כפגיעות — תוקף יכול להציף את תיבת הדואר של קורבן על ידי הפעלת אלפי דוא״ל אישור. הסקירה ממליצה ליישם הגבלת קצב של 3 בקשות שליחה מחדש לכל כתובת דוא״ל לשעה, עקביות עם הנחיות מניעת הכוח הגס של OWASP.
מושגים קשורים
זיהוי חריגות הוא משלים מתוחכם יותר להגבלת קצב: כאשר הגבלת קצב אוכפת ספים קשיחים, זיהוי חריגות מזהה סטיות מבסיס התנהגותי נלמד, ותופס קמפיינים של הונאה הנשארים מתחת למגבלות קבועות. גיוון ASN הופך לרלוונטי כאשר הגבלות קצב מיושמות לפי IP ושחקן רע מפיץ בקשות על פני כתובות IP רבות כדי להישאר מתחת לספים לכל IP — ניתוח ברמת ASN מזהה את הדפוס המצטבר. reCAPTCHA v3 מספקת ציון סיכון התנהגותי שיכול להיות משולב עם הגבלת קצב להחלת הגבלות הדוקות יותר באופן סלקטיבי על מפגשים המקבלים ציון פוטנציאלית אוטומטיים.
מגבלות / הסתייגויות
הגבלת קצב מבוססת IP פחות יעילה בסביבות עם NAT ברמת ספק, שבהן IP ציבורית אחת עשויה לייצג מאות מנויים ניידים לגיטימיים. הגבלת קצב לכל IP של הצבעה אחת ל-24 שעות תמנע באופן שגוי מרוב המנויים האלה להצביע. זו הסיבה שהגבלת קצב בפלטפורמות תחרות חייבת להיות מורבדת עם ביטול כפילויות מבוסס חשבון או עוגייה כאשר קהלים ניידים משמעותיים. בנוסף, הגבלות קצב המוגדרות אגרסיביות מדי יכולות להוריד את החוויה של מצביעים לגיטימיים המגיעים מרשתות משותפות כגון קמפוסי אוניברסיטה, משרדים תאגידיים או נקודות חמות גדולות של Wi-Fi ציבורי.