מה זה ASP.NET ולמה כדאי להכיר אותו¶
אם למדתם פיתוח ווב בעיקר דרך פייתון או Node.js, יש עולם שלם שאתם כנראה עדיין לא נתקלתם בו, וזה בדיוק העולם שבו חברות ענק, בנקים, וגופי ממשלה בונים את המערכות שלהם. ASP.NET הוא הפריימוורק של מיקרוסופט לפיתוח צד שרת, והוא נפוץ בדיוק במקומות האלה - סביבות ארגוניות גדולות עם דרישות אבטחה ותקינה מחמירות.
אז מה זה בעצם ASP.NET¶
בבסיסו, ASP.NET הוא פריימוורק לבניית אתרים ואפליקציות ווב בצד השרת, שרץ על הפלטפורמה של מיקרוסופט שנקראת .NET. בדרך כלל כותבים אותו בשפת C#, שפה מונחית עצמים שדומה במידה מסוימת לג'אווה, ומיקרוסופט מתחזקת אותה ומפתחת אותה כבר יותר משני עשורים. בדיוק כמו ש-PHP מריץ קוד שרת שבונה עמודי HTML, כך ASP.NET לוקח בקשה נכנסת, מריץ קוד C#, לרוב פונה למסד נתונים, ובונה מתוכו את התשובה שחוזרת לדפדפן.
למה ASP.NET כל כך נפוץ בעולם הארגוני¶
מיקרוסופט משווקת את ASP.NET כחלק ממערך שלם שכולל גם את מערכת ההפעלה Windows Server, את שרת האינטרנט IIS, ואת מסד הנתונים SQL Server. חברות שכבר משתמשות במוצרי מיקרוסופט לניהול המחשבים והרשת הפנימית שלהן, נוטות טבעית להמשיך ולבנות גם את האתרים והמערכות הפנימיות שלהן עם אותה משפחת כלים. זו הסיבה שסביר יותר למצוא ASP.NET דווקא בארגונים גדולים, מוסדות פיננסיים, וגופים ממשלתיים, יותר מאשר בסטארטאפים קטנים שבדרך כלל בוחרים כלים קלים יותר וחינמיים לגמרי.
איך זה מתארח - IIS¶
בדרך כלל ASP.NET רץ על שרת שנקרא IIS, קיצור של Internet Information Services, שהוא שרת האינטרנט של מיקרוסופט, מקביל בתפקידו ל-Apache או Nginx בעולם הלינוקס. IIS מגיע עם מערך ההגדרות, ההרשאות, ומנגנוני האבטחה שלו, שלפעמים שונים מאוד ממה שמכירים בעולם הקוד הפתוח, ומי שלא מכיר אותם עלול לפספס הגדרות שגויות שנפוצות דווקא בסביבה הזו.
התכונה המוזרה שכדאי להכיר - ViewState¶
אחת התכונות הייחודיות של ASP.NET, שכדאי להכיר גם כלומדי אבטחה, נקראת ViewState. זהו מנגנון שמאפשר לעמוד לשמור מצב בין בקשה לבקשה - למשל, לזכור מה המשתמש הזין בטופס בלי לטעון מחדש את כל הנתונים משרת. הדרך שבה זה נעשה היא הצפנה או קידוד של מידע שלם בתוך שדה נסתר בעמוד עצמו, שנשלח הלוך ושוב בין הדפדפן לשרת בכל בקשה. אם ה-ViewState לא מוגן כראוי בהצפנה ואימות תקינות, הוא יכול להפוך לנקודת תורפה - כי בעצם יש שם מידע פנימי של האפליקציה שיושב בצד הלקוח.
למה זה חשוב למי שלומד פריצת אתרים¶
חלק גדול מהעולם המקצועי של בדיקות חדירות הוא לא רק להכיר סוג אחד של סביבה, אלא לדעת להסתגל למה שיש מול העיניים. אם תעבדו בתחום בדיקות חדירות או bug bounty, סביר מאוד שתיתקלו במערכות ASP.NET, ואם אתם לא מכירים את המבנה הבסיסי שלהן - איך IIS מתנהג, מה זה ViewState, איך נראים הודעות שגיאה טיפוסיות של .NET - תתקשו לזהות דברים שיזוזו לכם ישר לעין למי שכן מכיר את הסביבה. זה לא אומר שצריך להיות מומחה ASP.NET כדי להתחיל, אבל כדאי לדעת שהעולם הזה קיים ולזהות אותו כשנתקלים בו.
לסיכום¶
בסופו של דבר, ASP.NET הוא לא רק עוד פריימוורק - הוא שער כניסה לעולם שלם של אתרים ארגוניים שרצים על תשתית מיקרוסופט. הבנה בסיסית שלו, גם אם אתם באים מרקע של PHP או Python, מרחיבה משמעותית את היכולת שלכם לזהות ולהעריך מערכות אמיתיות בעולם, במיוחד בתחומים כמו פיננסים וממשל שבהם הוא נפוץ במיוחד.
מי שרוצה להעמיק בעולם הזה ולהבין איך תוקפים ניגשים לסוגי מערכות שונים, כולל סביבות ארגוניות, מוזמן לעבור על קורס פריצת אתרים שבו בונים בסיס רחב לפני שצוללים לחולשות ספציפיות.
יש לכם שאלות, או ניסיון עם ASP.NET שתרצו לשתף? בואו לדבר על זה בקהילה שלנו.