מערכת לוידוא חוקיות הקלט של שדות טקסט חופשיים רן מור, הגר עופר מנחים : ד " ר גרא וייס, מר רפי ליפקין, מר נדב אטיאס
חברת אמדוקס נעזרת בממשקי ואתרי אינטרנט על מנת לשרת את לקוחותיה, ביניהם כאלו המאפשרים הכנסת תוכן על ידי משתמשים בשדות טקסט חופשי. שדות אלו חשופים להתקפות המתבצעות ע " י הזרקת קוד זדוני לשדה הטקסט. קוד זדוני אשר אינו נחסם יכול לגרום לנזקים רבים לחברה, הן מהפן השיווקי והן מהפן המקצועי. לדוגמא, קוד זדוני שהצליח " לחדור " למערכת נשמר בדרך כלל במאגרי המידע (databases) של החברה, כאשר הקוד הנ " ל יופעל, הוא יכול לגרום לנזקים חמורים לשרתים ולמערכת הפנים ארגונית. בנוסף, הקוד יכול לפגוע בלקוחות החברה המשתמשים בשירותיה ובכך ליצור נזק תדמיתי.
מטרת הפרויקט היא מניעת התקפות כאלו באפליקציות מבוססות רשת (web), ע " י אימות הטקסט המוזן לשדה הטקסט החופשי, בטרם הוא נכנס למערכת. אם הטקסט המוזן מאושר כחוקי לאחר הבדיקה, הוא מועבר הלאה, אחרת הוא נדחה ואינו מגיע כלל למערכת.
תהליך אימות הטקסט יכול להתבצע בשלוש דרכים עיקריות. הדרך הראשונה היא אימות באמצעות ביטויים רגולריים, השנייה היא אימות באמצעות מנוע למידה הנעזר בקלטים חיוביים וקלטים שליליים, והדרך השלישית היא אימות באמצעות מנוע למידה הנעזר בקלטים חיוביים בלבד. למערכת קיימים שני היבטים עיקריים : ההיבט הראשון : ניהול מאגר המידע של המערכת, הכולל הוספת ביטויים רגולריים, שימוש באוטומטים, לימוד ושימוש במנועי הלמידה. ההיבט השני : שימוש במאגר המידע ובפונקציות מובנות על מנת לאמת את הטקסט.
באמצעות ממשק המשתמש ניתן להוסיף אל מאגר המידע ביטויים רגולריים, ניתן לאמן את מנועי הלמידה, וכן להיעזר בכלים ויזואליים המאפשרים עבודה עם אוטומטים. מאגר המידע מחולק לקטגוריות, כאשר כל קטגוריה מייצגת סוג שדה מסוים, או התקפה מסוימת. למשל, בקטגוריה sql injection יהיה ביטוי רגולרי המייצג התקפות המתבצעות באמצעות sql injection. באופן דומה, בקטגוריה , למשל, יהיה סט חוקים שהתקבל באמצעות מנוע למידה שלמד מקובץ טקסט המכיל אימיילים חוקיים, ומקובץ טקסט המכיל אימיילים שאינם חוקיים.
קיימות שתי אפשרויות להוספת ביטויים רגולריים למאגר המידע של המערכת. האפשרות הראשונה והפשוטה ביותר היא כתיבה ידנית של הביטוי הרגולרי. האפשרות השנייה מספקת דרך נוחה ואינטואיטיבית ליצירת הביטוי הרגולרי, על - ידי שרטוט של אוטומט ולאחר מכן הפיכתו, באופן אוטומטי, לביטוי רגולרי המוזן ישירות למערכת.
המערכת מממשת שני מנועי למידת טקסט. מטרת מנועי הלמידה היא הסקת מידע חדש מתוך מידע מסוים הנמצא בידינו. במקרה שלנו, ביצוע אימות של הטקסט המוזן על פי טקסטים קודמים הידועים כחוקיים / לא חוקיים. בשלב הראשון, על המערכת ללמוד טקסטים המכילים רשומות רבות של קלטים חוקיים / לא חוקיים. במהלך תהליך הלמידה נוצר למעשה סט חוקים המגדיר מהו טקסט חוקי. כעת, לפי סט חוקים זה, תוכל המערכת לקבוע בעת הזנת טקסט ע " י משתמש, אם הטקסט שהוזן הינו חוקי.
בשיטה זו, מנוע הלימוד ילמד מטקסט המכיל קלטים חוקיים בלבד. בתהליך למידת הטקסט, יווצר וקטור של מילות הטקסט הנלמד. לדוגמא, אם הטקסט מכיל את המילה cat 3 פעמים, את המילה dog פעם אחת, ואת המילה mouse 4 פעמים, ייווצר הוקטור (3,1,4) V text =. כעת יחושב ה " גודל " של הוקטור באמצעות הנוסחא √ ||V text || = ונקבל את התוצאה
כעת יש לחשב, עד כמה " מתאים " טקסט המוזן לשדה טקסט חופשי, אל הטקסט שנלמד. החישוב יתבצע באופן הבא : נניח, למשל, כי הוזן הטקסט mouse. ייווצר הוקטור V input = (0,0,1). באותו אופן יחושב כעת ה " גודל " של הוקטור, ותתקבל התוצאה 1. כעת תחושב ההתאמה ביניהם ע " י (V text * V input ) ÷ (||V text || * ||V input ||), (0*3) + (0*1) + (1*4) 1 * , ונקבל מדד התאמה ככל שמדד ההתאמה קרוב יותר ל - 1, כך ההתאמה גדולה יותר.
בשיטה זו, מנוע הלימוד ילמד מטקסט המכיל קלטים חוקיים, ומטקסט המכיל קלטים שאינם חוקיים. בתהליך למידת הטקסט, עבוד כל מילה בכל אחד מן הטקסטים, יספרו מספר הופעות המילה בטקסט. זאת על מנת לחשב את סיכוי הופעת המילה בטקסט חוקי / טקסט לא חוקי. למשל, אם המילה cat מופיע בטקסט המכיל קלטים חוקיים 3 פעמים, ובטקסט זה יש סה " כ 5 מילים, הסיכוי שהמילה cat תופיע בקלט חוקי הוא 3/5.
כעת יתבצע החישוב : i p(w i |valid)∏p(valid) * i p(w i |not valid)∏p(not valid) * כאשר p(valid) – ההסתברות לקבלת טקסט חוקי p(not valid) – ההסתברות לקבלת טקסט לא חוקי p(wi|valid) – ההסתברות שהמילה wi תופיע בטקסט חוקי p(wi|not valid) – ההסתברות שהמילה wi תופיע בטקסט לא חוקי על התוצאה המתקבלת נבצע פעולת ln, ואם תוצאת החישוב גדולה מ - 0 הטקסט המוזן הוא חוקי, אחרת הוא אינו חוקי.
כעת ניתן להשתמש בנתונים שבמאגר המידע לשם בדיקת חוקיות הקלט שהוזן. ניתן לעשות זאת בשתי דרכים : לחיצה על כפתור Validate Categories Online, תציג בפני המשתמש מסך בו עליו לבחור את הקטגוריה הרצויה ולהזין את הטקסט שעליו הוא מבקש לבצע אימות, והמערכת תודיע האם הטקסט הוא חוקי או לא. ראשית על המשתמש לייבא את הפרויקט שלנו אל תוך הפרויקט עליו הוא עובד. לאחר מכן, לחיצה על כפתור Export DB To Other Project, תייצא את מאגר המידע שלנו אל הפרויקט החיצוני. כעת כל שנותר למשתמש לבצע הוא קריאה לפונקציה מובנית validate, המקבלת כקלט את הקטגוריה והטקסט הנבדק, ומחזירה האם הקלט הוא חוקי או לא.
לשם בדיקת יעילותה של המערכת, נבנה אתר ייעודי, המכיל שדות טקסט חופשי שונים. האתר מאפשר לתוכנות ייעודיות לתקוף אותו וכך לבדוק את יעילותה של המערכת באופן יעיל יותר. דוגמא לתוכנה כזו היא תוכנת Upscan, תוכנה התוקפת יישומי אינטרנט בהתקפות רבות ומגוונות. תוצאות ההתקפות נלמדות ומנותחות, ולפיהם מבצעים את השינויים הדרושים למאגר המידע של המערכת.