לוג שגיאות - Elmah

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

אז גם אם אתם בטוחים שעשיתם עבודת QA (בדיקת איכות) מעולה והאתר שלכם עובד בצורה מושלמת, זה לא מזיק שיהיה רישום של השגיאות, במקרה הטוב הוא ישאר ריק (למרות שבמקרה כזה הייתי בודק שהשגיאות אכן נשמרות Smile), במקרה הרע תוכלו לאתר בעיות שונות באתר שלא הייתם יודעים עליהם.

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

 

אז מה זה Elmah?

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

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

Elmah גם מאפשרת הורדה של כל השגיאות בפורמט CSV שאפשר לפתוח באקסל (Excel) או קבלת עדכונים בזמן אמת באמצעות קורא RSS.

 

איך נראה דף השגיאות?

על פי הגדרות ברירת המחדל של Elmah ניתן להגיע לעמוד השגיאות על ידי הקישור elmah.axd. למשל אם כתובת האתר שלי הוא http://www.example.com אז אוכל לגשת לרשימת השגיאות בכתובת http://www.example.com/elmah.axd. כמובן שזה ניתן לשינוי בהגדות של המערכת. אסביר בהמשך איך לעשות את זה.

 

העמוד הראשי נראה כך ויש בו רשימה של כל השגיאות. 

 

 

ניתן לראות פרטים נוספים על כל אחת מהשגיאות על ידי לחיצה על Details. שם גם ניתן לראות את מסך השגיאה הצהוב של ASP.NET ומתחתיו נתונים נוספים כמו הכתובת שבה נעשה השגיאה, מהי השגיאה, ה-IP של הגולש ועוד.

 

איפה המידע על השגיאות נשמר?

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

קבצי XML  - כל שגיאה תישמר בקובץ XML אחד בתיקיה שתוגדר בקובץ ה-Web.config.

מייל - ישלח מייל עבור כל שגיאה

בסיס נתונים- כל שגיאה תישמר ב- Database (קיימות מספר אפשרויות כמו SQL Server, MySQL ועוד)

 

 

אבטחה של לוג השגיאות

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

<authorization>  
    <allow roles="admin" />  
    <allow roles="dev" />  
    <deny users="*" />  
</authorization>  

כך שרק מי שהוא admin או dev יכול לגשת ללוג (בהתאם לשורות 2-3) וכל שאר הגולשים לא יכולים לגשת ללוג (בהתאם לשורה 4).

לחלופין, ניתן לחסום את הגישה ללוג השגיאות באופן גורף בגישה מרחוק כך:

    <security allowRemoteAccess="1" />  

 

 

יש הרבה אתרים שלא דואגים לאבטח את הדף הזה (תכף תראו כמה יש ואיך מוצאים אותם בקלות) וזוהי פרצת אבטחה חמורה!

Elmah הוא כלי יעיל ביותר לניהול שגיאות מכיוון שהוא מכיל פרטים רבים על השגיאה ועל המשתמש שקיבל אותה, אך נתונים אלו הם גם כלי נוח להאקרים שמעוניינים לפרוץ לאתר, לגרום נזק או לגנוב נתונים של משתמשים.

שימו לב לתוצאוות שמתקבלות על ידי חיפוש בגוגל של inurl:elmah.axd Error Log for. יש שם תוצאות רבות עם גישה ללוג השגיאות של אתרים שונים באינטרנט עם נתונים רבים. כל מה שהאקר צריך לעשות, זה להיכנס לכמה מהדפים האלו ולמשוך איזה נתונים שהוא רוצה (אמרתי לכם שזה יהיה קל Laughing). חלקם יכילו שמות של טבלאות ושדות בבסיס הנתונים, חלקם יכילו פרטים סודיים של משתמשים או מנהלים באתר ובסה"כ הוא יכול לקבל כיוון טוב מאיפה כדאי לפרוץ ואיך המערכת בנויה.

 

למי שמעוניין לקרוא פרטים נוספים על פריצה לאתרים באמצעות Elmah ניתן להמשיך לקרוא בפוסט של Troy Hunt (באנגלית).

להרחבה בנושא אפשרוית אבטחה של לוג השגיאות ניתן לקרוא בויקי של Elmah (באנגלית).

 

הגדרות נוספות של Elmah

* הכתובת לגישה לדף השגיאות היא בדר"כ elmah.axd אך זה ניתן לשינוי על ידי ההגדרה הבאה ב- web.config:

<httpHandlers>
     <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
</httpHandlers>

 

* שינוי כתובת שמירת קבצי ה XML ניתנת לשינוי על ידי ההגדרה הבאה ב- web.config:

<errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="/App_Data/MyElmahLogs/" />

 

 

נשמע מעניין! איפה מורידים את זה?

ניתן להתקין ישירות בפרוייקט שלנו ב-Visual Studio באמצעות NuGet (מומלץ) או להוריד את הקוד מדף הפרוייקט של Elmah ולהגדיר אותו ידנית.

 

בונוס: Elmah + SignalR = ElmahR

על SignalR כתבתי בקצרה בפוסט על Browser Link. השילוב בין השניים מביא לנו את ElmahR, שזה בעצם לוג שגיאות שמתעדכן בזמן אמת שכולל את השגיאות ממספר אתרים ובנוסף לכך גם גרפים וסטטיסטיקות נוספות.

ניתן לראות דוגמא באתר של ElmahR.

הוסף תגובה