טיפול באבטחה, שגיאות, אזהרות ורישום ביומן

סעיף זה עוסק בנושאים הבאים:

אבטחה

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

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

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

בקשה להצגה חזותית יכולה לציין פורמט תגובה בפורמט JSON, CSV או HTML. פורמט התגובה קובע את הפורמט שבו מקור הנתונים מחזיר טבלת נתונים. מאחר שקובצי CSV ו-HTML לא חשופים להתקפות XSRF, אפשר לגשת אליהם מדומיינים אחרים, גם במצב מוגבל.

כדי לציין מצב ללא הגבלה, צריך לבטל את isRestrictedAccessMode() באופן הבא:

  @Override
  protected boolean isRestrictedAccessMode() {
    return false;
  }

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

שגיאות ואזהרות

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

הרמה DataSourceException נמצאת בחבילה של base, והיא כוללת את הפרמטרים הבאים:

  • ReasonType
    הפרמטר הזה הוא חובה. הסוגים הזמינים של סיבות מוגדרים בenum מסוג ReasonType. אם אף אחד מסוגי הסיבות הזמינות לא מתאים, אתם יכולים להשתמש ב-Other או ב-Internal.
     
  • MessageToUser
    הפרמטר הזה מגדיר את הטקסט של הודעת השגיאה. ברוב המקרים, הוא מוצג למשתמש כהסבר קצר, ולכן חשוב לא לכלול מידע טכני או סודי.

תוכלו להשתמש בקבוצת פונקציות עזר ב-datasource.DataSourceHelper כדי לטפל בשגיאות. במקרה כזה צריך לקרוא לשתי פונקציות עם אותו שם של setErrorServletResponse כדי להקצות DataSourceException ולהגדיר שגיאה בתגובת שרת הנתונים. אחת מהפונקציות האלה מבקשת בקשה למקור נתונים, והאחרת משתמשת ב-HttpServlet request ונעשה בה שימוש במקרים שבהם אי אפשר ליצור DataSourceRequest. אפשר להטמיע הטמעה לדוגמה בקטע הגדרה של יכולות וזרימת אירועים.

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

  • אם הצגה חזותית של שאילתה מספקת LIMIT שמובילים לנתונים קטועים.
  • אם מבקשים תצוגה חזותית של שאילתה באמצעות תבנית עיצוב לא חוקית בסעיף FORMAT.

כדי להוסיף אזהרה משלכם, צריך ליצור מכונה של base.Warning ולהוסיף אותה לטבלת הנתונים באמצעות השיטה addWarning().

רישום ביומן

הספרייה משתמשת ביומן של ג'קרטה Common. ג'קרטה – מערכת יומנים משותפת יכולה להיות עם רוב מערכות הרישום הנפוצות, שאולי כבר מותקנות אצלכם. אם מערכת הרישום ביומן אינה סטנדרטית, יכול להיות שתצטרכו לכתוב מתאם. לפרטים נוספים, קראו את דף הבית של רישום ביומן של Jakarta Commons.

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