@דוד ל.ט.
שים לב שלבחור שיושב מול המחשב, קל מאוד לעשות מה בא לו עם התוכנה שלך יכולה לעשות מב בא לה. הוא רק צריך לחץ ממנה את הקונקשיין, ותאמין לי שזה לא הכי מסובך. לך אולי זה לא אכפת, אבל יש לקוחות שהמידור במשרדם קריטי.
אז בא ונבדוק ביחד מה יש לנו.
לפני שאני מתחיל אני רק רוצה לזכור שבעבר כתבת כאן באחד האשכולות שאתה בעיקרון נוהג לתת בממוצע לא יותר מ5 שדות בטופס.
אם אני מבין, אתה משתמש רק בSP ולא ח"ו בדאטאסט ודומיהם, אחרת יש גישה לטבלה גם בדאטאסט, לא?
נתחיל....
WPF וWINFORMS:
בWPF יש רפלקטור שיכול להוציא את קוד המקור.
יתרה מכך, בדוטנט בד"כ הקונקשיין נשמר בAPP.CONFIG.
אז, אם העובד רוצה,הוא יכול לפתוח את הWPF ברפלקטור, לחלץ את הקונקשיין, אבל משם - אין לו לאן להתקדם. כי הנחת העבודה שלי (וגם שלך בהודעה שלך) היא שהיוזר שאתה מקצה לסביבת העבודה מוגבל ולא יכול לגשת לטבלאות אלא רק לSP מסויימים.
אני מבין שגם לאורך כל הדרך ככה אתה שולף את הנתונים (בקוד),ואת העידכון אתה מבצע עם הSP.
בא ונראה איפה אבטחת המידע:
נניח שהID של היוזר הוא 2 - ועכשיו בא לו לקרוא את הנתונים שרק יוזר שהID שלו הוא 1 יכול לקרוא,כל מה שהוא צריך לעשות זה:
- להעתיק את הקונקשיין.
- להעתיק דרך הרפלקטור את משפט הSP.
- להריץ את זה ממקום אחר ולשלוח בID של היוזר 1 במקום 2. (יש לו הרי שליטה על כל מה שזז.)
נכון, אפשר להגן ע"ז עם טוקנים וכו', אבל גם הקוד שמייצר את זה דיי חשוף כשאנחנו משתמשים ברפלקטור.
אז כנראה שגם זה לא כ"כ מאובטח.
אלא מאי, תגיד לי שיש טבלאות שאני בכלל לא רוצה שהוא יראה, ולכן זה חסום בסביבת העבודה, מנסיון, אתה גם יודע שבד"כ תכתוב גם SP לטבלאות שרק המנהל צריך, והפיתרון שתצטרך לעשות זה עוד משתמש בSQL SERVER בשביל המנהל,וזה סיכמנו שאתה לא עושה.
עכשיו, בא נבדוק ביחד מה קורה באקסס:
הקונקשין נשמר בהגדרות הטבלה המקושרת.
אין רפלקטור לקוד (טוענים שיש איזו אפשרות לראות את הקוד, כמה שחיפשתי וחיפשתי מעולם עדיין לא מצאתי מישהו שמשחזר את הקוד למעט חברה אחת, שרוצה הוכחת בעלות גמורה על הקובץ לפני שהיא עושה את זה.)
(ד"א, אני דוגל לתת למשתמש את כל השדות שרק יכול להיות, במקום לקבל אלף טלפונים על איזה כפתור ללחוץ כדי לקבל את המידע -- מה שכן, אני מסדר אותם בטאבים)
אם העובד יצליח לגשת לטבלה המקושרת ולחלץ את הקונקשיין (ותאמין לי שזה לא הכי מסובך), יש לו לכאורה לאן להתקדם.
הוא יפתח SQL מנג'מנט, ויראה את כל הטבלאות,ומשם הדרך פשוטה לטרור עסקי -- עד מחיקת טבלאות ונקמות.....
בא ונראה איפה אבטחת המידע:
- אני לא שומר שם משתמש וסיסמא בטבלה המקושרת. מי שיצליח לחלץ את הקונקשיין - יהיה לו רק את השרת + שם הDB. (כל השאר לא רלוונטי בחיבור)
- החיבור לטבלאות המקושרות מתבצע אחרי הכניסה -- עם שם המשתמש והסיסמא של המסד, ואחרי שאני מוודא שאין לו גישה לטבלאות (כולל שהוא לא יכול להציג אותם ע"י F11)
- כל הקוד חסום וסגור ללא אפשרות רפלקטור.
כל מה שכתבתי כאן זה לגבי חיבור רגיל של ODBC עם אקסס. לגבי הדוגמא שהעלתי לעיל, אני מוסיף גם את הסעיף הבא:
4. אין טבלה מקושרת. אין איך להוציא את הקונקשיין. כי הוא יושב בתוך הקוד. (לגבי הפחד שמישהוא יריץ את הפונקצייה מבחוץ [זה אפשרי] - אני חושב להכניס אצלי עוד פרמטר של סיסמא פנימית, כדי שאף אחד לא יוכל לבצע את החיבור מבחוץ. [אני עושה את זה כיום כך בריענון של השרת -- בסעיף 2])
אגב, האובייקט הנ"ל זמין גם בדוטנט וגם בC++ וכו'
ושכחתי דבר מאד חשוב.
תמיד יוכלו לשים סניפר ולראות את כל מה שעובר בTCP. אם לזה אתה מתכוון, תכתוב.
@דוד ל.ט.
לך אולי זה לא אכפת, אבל יש לקוחות שהמידור במשרדם קריטי.
- אכפת לי מאד.
- הלקוחות שאני מכיר שהמידור אצלם קריטי - הסיסמא של הכניסה לווינדוס תהיה בד"כ 1234 או משהו דומה. מספרים ומספרים, אבל לא בטוח שהם גם מבצעים.
אגב מידור קריטי:
משרד החינוך מספר לנו כבר שנתיים שהוא הולך לשנות את כל הגישה של חיבור מתכנתים למנב"ס, ואחת הדרישות שלהם זו אבטחה מטורפת (אתה קראת לזה: "מידור קריטי") מאד מעניין שדווקא הקובץ של המנב"ס פתוח לעין כל ללא סיסמא או אבטחה מינימלית :x :x
מתנצל על התגובה הארוכה
ClickOne
פורסם במקור בפורום CODE613 ב13/02/2014 00:30 (+02:00)