שגיאה 412 ו-mod_security

פיירוול אפליקטיבי שנמצא ב-Apache יכול לגרום לצרות צרורות - כך מאתרים ומטפלים בו

לא הרבה בקהילת בוני האתרים ואפילו מתכנתים מכירים את mod_security, מדובר בפיירוול אפליקטיבי שניתן להתקין על אפאצ'י כמודול (כמו mod_rewrite). מה שהמודול הזה מאפשר הוא חסימת טווח של כתובות IP, חסימה של התקפות XSS, הגנה מפני SQL Injections והגנה מפני ספאמרים. התקנת המודול די פשוטה, אך ההגדרה שלו היא קצת יותר בעייתית. כיוון שעל מנת להשתמש בו צריך להגדיר אותו כפרוקסי – על מנת שכל הבקשות מהעולם אל ה-Apache שלכם יעברו דרך mod_security. זה לא משהו מסובך ויש מדריכים לא רעים ברשת שמסבירים על mod_security ועל התקנתו.

אני לא משתמש ב-mod_securtiy כי ראשית כל אני משתמש בפיירוולים אחרים ובנוסף אני משתמש בפיירוול על מנת לספק שכבת הגנה נוספת ולא נסמך עליו על מנת לעצור התקפות XSS או התקפות SQL Injections. קודם כל על האפליקציה שלי להיות חסינה בפני עצמה (או לפחות להשתדל להיות חסינה) ורק אחרי שאני מעביר אותה בדיקה משל עצמי אני שם את הפיירוול.

מצד שני, יש לא מעט ספקי אחסון שמשתמשים ב-mod_security כדרך זולה ופשוטה לספק פיירוול אפליקטיבי לשרתים שלהם ושכבת הגנה נוספת. הבעיה היא שהפיירוול הזה לא מגן רק בפני כל מיני דרעקים כמו XSS או חסימת כתובות IP אלא גם לעיתים (תלוי בהגדרות) חוסם גם לפי מילים 'אסורות' כמו פוקר, הימורים ולפעמים גם דברים תמימים יחסית כמו sex או insurance. כאשר mod_rewrite חוסם את הבקשה הזו, הוא מחזיר שגיאת 412 קריפטית למדי: Error 412: precondition failed.

כאשר אתם מקבלים הודעה כזו, הכי קל זה לתקן את הבעיה בעצמכם או ללכת ולהתבכיין ל-Sysadmin שלכם שינטרל את המודול או שלפחות יבדוק את רשימת המילים האסורות. אבל במידה ויש לכם shared hosting זול, וה-sysadmin הוא איזה הודי אידיוט שיושב בכפר שלו עם קקי של פרות עד הצוואר, יש צורך בנקיטת פתרון אחר. למרבה המזל, ברוב המקרים אפשר לנטרל את mod_security באמצעות htaccess.

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

במידה והוא עובד, על מנת לנטרל את השגיאה הסוררת כל מה שעלינו לעשות הוא להכניס את השורה הזו ל-htaccess:


SecFilterEngine Off

כמובן שאז אתם לא מוגנים כלל (כביכול), אפשר לאפשר רק לקובץ הבעייתי פטור מהצנזורה של המודול באמצעות ציון שמו המלא ומתן 'הפטור'. בואו ונצא מנקודת הנחה שהקובץ שנותן לנו שגיאת 412 הוא img/poker.png :


SecFilterEngine On
SecFilterSelective "REQUEST_URI" "/img/poker.png" "allow,nolog"

וזהו, כך מאפשרים רק לתמונה או קובץ מסוים לעבור את הצנזורה הקשוחה של mod_security.

פוסטים נוספים שכדאי לקרוא

רספברי פיי

הרצת גו על רספברי פיי

עולם הרספברי פיי והמייקרים ניתן לתפעול בכל שפה – לא רק פייתון או C – כאן אני מסביר על גו

תמונת תצוגה של מנעול על מחשב
פתרונות ומאמרים על פיתוח אינטרנט

הגנה מפני XSS עם Trusted Types

תכונה ב-CSP שמאפשרת מניעה כמעט הרמטית להתקפות XSS שכל מפתח ווב צריך להכיר וכדאי שיכיר.

תמונה של הבית הלבן עם מחשוב ענן וטקסט: FEDRAMP
פתרונות ומאמרים על פיתוח אינטרנט

FedRAMP & FIPS מבוא למתחילים

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

גלילה לראש העמוד