פוסט זה הוא חלק מסדרת הפוסטים “תכנות לחלונות 8 בHTML5”.
c:\program files\Applications – התיקיה הראשית
נכון לעכשיו, כל אפליקציות מטרו מותקנות לתיקייה אחת בלבד בדיסק- c:\program files\applications . אם כי אי אפשר לדעת בשלב זה האם גם בגרסה הסופית של חלונות זה ישאר כך. לתיקייה הזו מותקנות כל אפליקציות המטרו ע”י התקנת העתקה רגילה. במבט ראשון זה נראה כמו פרצת אבטחה – האפליקציות פתוחות לחלוטין, למרות שהתיקייה עצמה לא נראית, ואין גישה אליה בצורה רגילה:

כפי שאפשר לראות, התיקייה Applications לא מוצגת, אבל אפשר לנסות לגשת אליה ע”י הקלדה בשורת הכתובת:

אולם אז תחכה לנו הפתעה – אין לנו גישה לתיקיה הזו:


איך נגשים לתיקיה
נראה קצת מעצבן שאין לנו גישה לתקייה במחשב שלנו, אבל אפשר לפתור זאת במהירות. נלחץ על security tab בחלון שקפץ לנו, ונראה את המסך הבא

נלחץ advanced

מסתבר שהתיקיה היא לא של המשתמש שלנו. נלחץ על Change, ובמסך הבא נקליד את שם המשתמש שלנו ולאחריו CheckNames:

נלחץ על OK, וננסה עוד פעם להקליד Applications בשורת הכתובת. עוד פעם תקפוץ לנו אזהרה, אבל עכשיו אם נלחץ Continue נקבל גישה לתוך התיקייה.

בשלב הזה אנחנו נגלה משהו די מטריד – קוד המקור של כל אפליקציות המטרו חשוף *לחלוטין* ואפשר לשנות אותו כאוות נפשנו. כדוגמא, זו התיקיה של אפליקציית Alarms שמאפשרת להגדיר שעון מעורר.

אפשר לראות כי קוד המקור שנמצא כאן ממש זהה לקוד שראינו בפוסט הקודם “מבנה אפליקציות”, לצד עוד כמה קבצים לא מוכרים כמו AppxSignature.p7x.
אם נכנס לדוגמא ל-default.html נוכל ממש לערוך את קוד המקור:

אם נשנה את Alarms ל Elad’s Alarms זה ממש ישנה את האפליקציה – אין שום בדיקה על התקינות של האפליקציה ועל כך שהיא לא שונתה:

האם יש כאן חור אבטחה?
רוב האפליקציות שמגיעות מותקנות בחלונות 8 בגרסה הנוכחית כתובות בHTML5, שמותקן כקוד מקור. מאוד קל להכנס ולשנות כל מה שבא לנו, אבל גם אפליקציות C# ו - C++ ניתנות לפתיחה ולשינוי. הבלוגר ג’סטין אנג’ל טען שזו פרצת אבטחה אבל האמת שאני לא באמת מבין מה חדש. אפשר להכנס לאפליקציות גם היום, וזה דבר די ידוע באבטחת אפליקציות – השרת תמיד צריך לחשוד בכל קלט שמגיע מהלקוח – זה די טריוויאלי.
בנוסף, אנחנו יודעים שאפליקציות של ה Application Store אמורות לבוא חתומות דיגיטאלית – אפשר בהחלט להניח שבגרסאות הבאות של חלונות המערכת תבדוק את החתימה הדיגיטאלית ותשווה אותה להאש כלשהו על הקבצים לודא שהם לא שונו – כך שאני לא מבין על בדיוק הוא קפץ. זה שזה לא נעשה בגרסה ששוחררה לפני שה Application Store בכלל נפתח זה הגיוני.
כשמבצעים אריזה של אפליקציה, כל הקבצים מועתקים לתוך קובץ זיפ עם סיומת appx. :

בתוך קובץ הזיפ שלהלן (זה הקובץ שיירד מה Application Store), יושבים לצד הקבצים שלנו עוד שלושה קבצים חשובים:
1. AppXManifest.xml – שמכיל את ההגדרות של האפליקציה (באיזה contracts היא משתמשת, איזו יכולות היא צריכה וכו’) כפי שראינו בפוסט הקודם.
2. BlockMap – אמור להכיל האש של כל הקבצים, וזה מה שחסר כרגע בגרסה הנוכחית שמשוחררת לציבור.
3. Signature – אותו קובץ AppxSignature.p7x שראינו מקודם – שמכיל את החתימה הדיגיטאלית של האפליקציה, מה שמוודא שאי אפשר “לזייף” אפליקציות, ושהקבצים לא שונו.
כאמור, בגרסת המפתחים לא כל הפיצ’רים גמורים (את מישהו זה מפתיע?) ומההתרשמות שלי ממה שראיתי עד עכשיו יש את כל הסיבות לחשוב שחלונות 8 יהיה מאובטח הרבה יותר מכל מערכת הפעלה קודמת.
איפה האפליקציות שאנחנו בנינו?
האפליקציות שנוצרות כשאנחנו מריצים אפליקציה מתוך Visual Studio לא מותקנות לתוך תקיית הApplications, אלא לתוך תקיית עבודה בשם c:\users\elad\AppxLayouts (אצלי זה “elad” – בכל מחשב זה ישב תחת המשתמש הרלוונטי):

התקייה הזו נראית די דומה לתיקיית Applications - לדוגמא, כך נראית התקייה של האפליקציה שבנינו בפוסט הקודם:

גם כאן אפשר לראות את כל קבצי המקור, רק שבהרצה לוקאלית ללא הApplication Store אין קובץ חתימה דיגיטאלית.
כרגע עוד אי אפשר לבצע העלאה של אפליקציות לחנות, היות וחנות האפליקציות עדיין לא פעילה. החנות אמורה להפתח לציבור יחד עם השחרור של גרסת הבטא בסוף פברואר 2012. גרסת בטא היא בדר”כ סגורה מבחינת פיצ’רים ולכן עוד כחודשיים נדע הרבה יותר.