
AppData\Roaming\Microsoft\UserSecrets של המשתמש, בקובץ בשם secrets.json. שם התיקייה הוא ה-UserSecretID.הטקסט המלא של הדקות הראשונות בהרצאה «הסבר על App Secrets» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אנחנו מגיעים לנושא קצר ומאוד מעניין בתחום ה-Security. הנושא הזה נקרא App Secrets, כלומר Application Secrets, או סודות האפליקציה.
בואו נבין מה זה App Secrets. App Secrets זה פשוט כובד ג'ייסון שמיועד להכיל מידע רגיש שהאפליקציה משתמשת איתו, כמו סיסמאות, מפתחות, Connection String לדוגמה, כי יש בה סיסמאות ונתונים רגישים כמו שם דאטאבייס וכדומה.
כל אייטם כזה שהוא מידע רגיש, הוא מיוצג בתוך קובץ ה-Jethon על ידי Key Value, זוגות של Key Value Pair. הקובץ הזה נמצא במכונה, אם אני כרגע במחשב הפיתוח אז אני נמצא בלפטופ שלי, אז הוא נמצא איפשהו במחשב, בנתיב מחוץ לפרויקט ולא קשור בכלל לפרויקט.
בווינדאוז זה ממוקם בנתיב הזה. יוזר, ויש לנו את היוזר של המחשב. אפ דאטה, רומינג, מייקרוסופט, יוזר סיקרטס. זה נקרא יוזר סיקרטס כי זה ספציפית ליוזר. יש לנו פה איזשהו קוד, ואף וכו' בג'ייסון נקרא secrets.json.
הקוד הזה, UserSecretID, זה פשוט גויד. Global Unique Identifier, לפעמים זה נקרא UUID, Universal Unique Identifier זה פשוט מכרוזת ארוכה כזאת של 36 תווים ייחודית שמייצגת את הפרויקט ונמצאת בתוך קובץ שנקרא Project File בתוך הפרויקט שלנו אנחנו עוד מעט נראה מה זה בדיוק הקובץ הזה בואו נחשוב רגע על כל התהליך של המתכנת שהוא בונה מערכת ומעלה
אותה לאוויר קודם כל הוא מתכנת אצלו במחשב יש לו מחשב הלפטופ האישי שלו או המחשב הנייח בעבודה שם יש לו את כל הפרויקט עם כל הקבצים של הפרויקט ויש מגוון קבצים בפרויקט בוא נניח שאותו מתכנת מכניס את הסיסמה לדאטאבייס או את הקונקשן סטרינג באחד מהקבצים של הפרויקט ברור שהפרויקט צריך את המידע הזה אז הפרויקט עובד לו והכל טוב נכון
להיום הדבר הנכון לבצע בפרויקטים זה להשתמש באיזשהו ריפוזיטורי של סורס קונטרול כמו גיטהאב גיטלאב יש מגוון ריפוזיטוריז כאלה שבעצם מאפשרים למתכנת לשמור את כל קבצי הפרויקט במערכת ניהול גרסאות כאלה יש לזה המון יתרונות הוא מנהל את הגרסאות של הקוד אני יכול לחזור אחורה לגרסה ישנה יותר ולשלוף ממנה איזשהו קוד ישן אני יכול
לשתף את המערכת שלי בין מתכנתים כל המתכנת במערכת באפליקציה יכול ללכת ולהוריד את הפרויקט ולעבוד עליו ולהחזיר אותו לאותו סורס קונטרול. כאשר המתכנת מעלה את זה לסורס קונטרול, הוא כמובן מעלה את זה עם המידע הרגיש, והמידע הרגיש כבר לא נמצא רק אצלו במחשב, הוא נמצא כבר ב-Gitub.
אתם יכולים להגיד, אוקיי, אבל ריפוזיטורי, המאגר הזה ב-Gitub יכול להיות שהוא פרייבט ונגיש רק למתכנתים של המערכת, של החברה, זה נכון, אבל יש המון מקרים שהמידע הזה נפרץ, בין אם הוא פרטי בין אם הוא ציבורי המון פעמים שוכחים לעשות ריפוזיטורי
פרייבט יש ממש טכניקות פריצה שעושות טרגטינג על גיטהאב וגיטלאב וכל מיני מערכות של סורס קונטרול בשביל לחפש קודים וסיסמאות בתוכם אנחנו בשום אופן לא רוצים סיסמאות מפתחות מידע רגיש שיעלה לכל המערכות האלה של הסורס קונטרול אז אתם יכולים להגיד טוב מה הבעיה בוא נשים את המידע הזה בקובץ כמו שהיה לנו את המחוז את קונקשן סטרינג שזה סוג
של מידע רגיש בתוך אפ סטינגס וניתן הוראה בתהליך ההעלאה לגיט להתעלם מהקובץ הזה. זה גם נכון וזה כמובן הדבר הנכון לעשות אבל עדיין יכול להיות שיש איזה שהוא מתכנת שלא יעשה את זה שיתעלם מזה שלא יגדיר לעצמו את אותו גיט איגנור קובץ.
עודות גיט איגנור שגורם לזה שקבצים מסוימים לא יעלו זה לא הכי הכי סייף שיש למרות שזה משהו שדי חובה לעשות בוא נניח שיש מידע רגיש הוא כן עלה לגיטהאב דרך גיטהאב אנחנו הרבה פעמים מפבלשים את המערכת ישירות מגיטהאב זה עולה לאוויר זה טכניקה שהרבה פעמים מבצעים גיטהאב מפבלשת ואז המידע כן נמצא בפרודקשן שכמובן הוא אמור להיות בפרודקשן אותו מידע רגיש יכול להיות שבפרודקשן גם הסיסמה יכולה
להיות אחרת, זה כמובן, אבל עדיין יש פה את המידע הזה. כאן אנחנו נתקלים בבעיה שהמידע יכול לזלוג למערכות כמו GitHub או Source Control אחרים.
מה הפתרון? AppSecrets אומר דבר כזה, מראש כאשר אנחנו מפתחים את הפרויקט שלנו,