שגיאה 412 ו-mod_security

לא הרבה בקהילת בוני האתרים ואפילו מתכנתים מכירים את 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.

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

אהבתם? לא אהבתם? דרגו!

לא אהבתי בכלללא אהבתיבסדראהבתיאהבתי מאוד (אין הצבעות)


אל תשארו מאחור! יש עוד מה ללמוד!

הצטרפו לעדכונים!

העדכונים נשלחים אך ורק כאשר האתר מתעדכן.

רן בר-זיק

רן בר-זיקכותב כל המאמרים באינטרנט ישראל, מפתח אינטרנט מנוסה במגוון שפות ופלטפורמות.
ניתן ליצור איתי קשר באמצעות:
כתובת המייל שלי: info@internet-israel.com.
פרופיל הלינקדאין שלי

הטוויטר שלי

פרופיל הפייסבוק שלי

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