none
אבטחה כללית RRS feed

  • שאלה

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

    2.נניח שאני יוצר שרת וקליינט. איך השרת יכול לוודא שהקליינט זה הקליינט המקורי שנכתב, ולא גירסא של מישהו אחר, או מישהו שלקח את הקוד ושינה אותו?

    3.יש דרך לדעת אם הוזרק dll לתוכנית שאמור לשנות את פעולותיה?

    4.איך אפשר לדעת אם מוזרק ערך אחר לתוכנית, על ידי תוכניות כגון Chat Engine ולהימנע משינויו? (בשימוש WPF)

    • נערך על-ידי DaniAl5 יום ראשון 21 ספטמבר 2014 10:07
    יום ראשון 21 ספטמבר 2014 10:06

תשובות

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

    1. למה זה חור להחזיר ססמה באפליקציה מקומפלת שלא נגישה לאף אחד, יותר מאשר להעביר את הססמה ברשת האינטרנט כשכל משתמש יכול לאתר את התעבורה? ישנן שיטות קידוד והצפנה בהן ניתן לעשות שימוש במקרה הצורך. זה לא נושא לפורום אלא תחום רחב ללימוד. הפורום יכול לכסות שאלות ספציפיות. בכל מקרה ובכל דרך שתבחר הסופו של דבר אתה צרי לשמור את הנתונים היכן שהוא ואתה חייב להעביר אותם ברשת לשרת המרוחק... אין 100% אבטחה :-)

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

    2. קידוד והצפנה של נתוני הלקוח + הצפנה וקידוד של התעבורה (למשל עבודה תחת SSL)

    3. תבדוק את השאלה, העברית לא ברורה (חרק של DLL ?!?).

    4. קידוד והצפנה של מידע לבדיקה :-)

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


    [Personal Site] [Blog] [Facebook]signature

    • סומן כתשובה על-ידי DaniAl5 יום ראשון 21 ספטמבר 2014 12:43
    יום ראשון 21 ספטמבר 2014 10:57
    מנחה דיון
  • 1. לא דיברתי על צד המשתמש אלא על צד שרת. מסד נתונים למשל או אפליקציה בצד השרת כמו WCF. כל התכנון צריך להיות בצורה נכונה מההתחלה. הפרדה בריאה למשל לשכבת הלוגיקה ושכבת הלקוח. הפרדה של שכבת הלקוח לשכבת ה GUI ושכבת ה מודלים וכו'

    עתה אני רואה את ההבהרה לגבי "תכנית שאין לה קשר לשרת" :-)
    אני מגיע מעולם הפיתוח ל WEB בעקרון ובריר המחדל שלי זה עבודה עם רשתות...

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

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

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

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


    [Personal Site] [Blog] [Facebook]signature

    • נערך על-ידי pituachMVP, Moderator יום ראשון 21 ספטמבר 2014 19:11
    • סומן כתשובה על-ידי DaniAl5 יום רביעי 24 ספטמבר 2014 04:36
    יום ראשון 21 ספטמבר 2014 19:10
    מנחה דיון

כל התגובות

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

    1. למה זה חור להחזיר ססמה באפליקציה מקומפלת שלא נגישה לאף אחד, יותר מאשר להעביר את הססמה ברשת האינטרנט כשכל משתמש יכול לאתר את התעבורה? ישנן שיטות קידוד והצפנה בהן ניתן לעשות שימוש במקרה הצורך. זה לא נושא לפורום אלא תחום רחב ללימוד. הפורום יכול לכסות שאלות ספציפיות. בכל מקרה ובכל דרך שתבחר הסופו של דבר אתה צרי לשמור את הנתונים היכן שהוא ואתה חייב להעביר אותם ברשת לשרת המרוחק... אין 100% אבטחה :-)

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

    2. קידוד והצפנה של נתוני הלקוח + הצפנה וקידוד של התעבורה (למשל עבודה תחת SSL)

    3. תבדוק את השאלה, העברית לא ברורה (חרק של DLL ?!?).

    4. קידוד והצפנה של מידע לבדיקה :-)

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


    [Personal Site] [Blog] [Facebook]signature

    • סומן כתשובה על-ידי DaniAl5 יום ראשון 21 ספטמבר 2014 12:43
    יום ראשון 21 ספטמבר 2014 10:57
    מנחה דיון
  • 1. אני לא הבנתי אותך נכון... אתה אומר שבתנאים מסויימים, זה בסדר שהסיסמה והשם משתמש יהיו בצד ההמשתמש?! הרי קל מאוד היום לקרוא את הקוד תוכנית  (Reverse engineering), ככה שכולם יכולים כמעט לראות את המידע... אבל אם נניח אני שומר את הסיסמה במסד נתונים על המחשב, הרי אם יפתחו את התוכנית יוכלו בסופו של דבר לראות מה המפתח של המסד, ובכך להיכנס אליו, לא?

    2. הבנתי, אני ילמד על זה בהמשך, תודה.

    3. כתבתי "הוזרק" משלון הזרקה, אבל אני מניח שזה על אותו עיקרון של 4, תודה.

    ולמען הסר ספק, בשאלה 1 התכוונתי לתוכנית שאין לה שום קשר לשרת מרוחק, סה''כ תוכנית קטנה שאמורה לעלות קבצים רק למי שיש את התכנית הספציפית.


    • נערך על-ידי DaniAl5 יום ראשון 21 ספטמבר 2014 12:22
    יום ראשון 21 ספטמבר 2014 12:19
  • 1. לא דיברתי על צד המשתמש אלא על צד שרת. מסד נתונים למשל או אפליקציה בצד השרת כמו WCF. כל התכנון צריך להיות בצורה נכונה מההתחלה. הפרדה בריאה למשל לשכבת הלוגיקה ושכבת הלקוח. הפרדה של שכבת הלקוח לשכבת ה GUI ושכבת ה מודלים וכו'

    עתה אני רואה את ההבהרה לגבי "תכנית שאין לה קשר לשרת" :-)
    אני מגיע מעולם הפיתוח ל WEB בעקרון ובריר המחדל שלי זה עבודה עם רשתות...

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

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

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

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


    [Personal Site] [Blog] [Facebook]signature

    • נערך על-ידי pituachMVP, Moderator יום ראשון 21 ספטמבר 2014 19:11
    • סומן כתשובה על-ידי DaniAl5 יום רביעי 24 ספטמבר 2014 04:36
    יום ראשון 21 ספטמבר 2014 19:10
    מנחה דיון