השינויים האחרונים – מעבר לשרת אחסון ודומיין חדש

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

שנית, לפני כשבוע קיבלתי את המייל הבא:

We are selling the domain name krooc.com.  Since you own krooc.info
if you would like the more desirable .com version we are making it available to you.  The
one time cost is $99.97.  That includes a full year of registration and transfer of
ownership to you.  To purchase or to learn more go to:

$LINK

If you pass on this opportunity someone else could purchase this domain and it may not be
available again.  If you are not interested we will not contact regarding this domain.

כשראיתי שהדומיין krooc.com פנוי קניתי אותו לשנתיים, וממש לא ב-100$…

Startup Weekend Israel

לפני מספר ימים הודיעו לי שזכיתי בתחרות בה השתתפתי בפרס – כרטיס כניסה לכנס Startup Weekend Israel. כמו כל גיק טוב, ביום רביעי יצאתי לבית IBM בפתח תקווה שם התקיים האירוע עצמו. (כל האירוע סוקר בהרחבה על ידי NewsGeek)

באירוע נכחו כ-130 איש שהתבקשו להקים סטארטאפ בתוך שלושה ימים (בסופו של דבר הוקמו כ13 קבוצות). במהלך הכנס התחברתי לכארבעה אנשים נוספים ויחד הקמנו פרויקט סטארטאפ שנועד כדי לאפשר אימות של מידע ברשת. בסופם של שלושה ימים ארוכים ומעייפים הצגנו את הפרויקט בפני חבר שופטים מטעם חברות גדולות (Google, IBM ו- Astrails) וזכינו במקום הראשון. הפרויקט היה כיף גדול, ולמרות שהגעתי לכנס מעט סקפטי, אני ממליץ לכולם להתנסות בחוויה. המארגנים, אגב, מסרו שיהיו עוד Startup Weekends בעתיד… אני לא מתכוון לפספס אותם.

קישורים רלוונטיים:

Startup Weekend Israel
Startup Weekend Israel
Startup Weekend Israel
Startup Weekend Israel

אבטחת Cookies (עוגיות) ו-Sessions (סשנים) בPHP

מבוא לקריפטוגרפיה, הצפנה וגיבוב

עוגיות, סשנים ומה שבינם

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

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

הקדמה

כדי לאבטח את האתר שאנחנו בונים בצורה מקסימלית צריך תמיד לחשוב מחוץ לקופסא, שכן הפתרונות שאנחנו מציעים תמיד נראים לנו כטובים ביותר – אבל עין אוביקטיבית תמצא בהם את הפגם במהירות. בפוסט זה אתחיל להסביר כיצד ניתן לאבטח את קוד הPHP שלנו בצורה נכונה, אבל כמובן שאבטחת קוד PHP אינה מספקת. כשמאבטחים אתרים דינאמיים תמיד צריך לחשוב על פרצות אחרות, מסוכנות לא פחות, כדוגמאת הזרקת SQL כשמשתמשים במסדי נתונים ובSQL, הזרקות קוד כשאנחנו מאפשרים למשתמש להכניס קוד JavaScript ללא השגחה מתאימה וכו'.

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

עוגיות

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

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

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

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

כל שינוי של ערך העוגיה על ידי המשתמש נקרא Cookie Poisoning, והוא דומה מאוד למתקפות ARP Poisoning על רשתות. המידע נערך על ידי המשתמש ובכך מטעה את השרת שקורא נתונים שגויים מהמשתמש. דוגמא קיצונית נוספת היא כאשר משנים את סכום הקניה בעוגיה בחנויות הוירטואליות ובכך משנים את הסכום הכולל של הקניה.

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

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

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

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

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

רשמים ומחשבות מהרצאתו של ביז סטון, ממייסדי טוויטר, בישראל

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

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

הוא פתח את ההרצאה בתמונה בה רואים אותו ואת אשתו ביום חתונתם; אשתו עם יד על פניה, מסתכלת אל הרצפה והוא נראה מאושר מתמיד – הוא סיפר שבאותו רגע הוא ניסה להסביר לאשתו ש"Happy Mistakes are the best kind", ולא תמיד החיים מתנהלים כמו שציפינו. הוא סיפר שתופעת המיקרו-בלוגינג טוויטר החלה בכלל כפרויקט שונה לגמרי של העברת קטעי אודיו על גבי רשת האינטרנט, אבל התפתחה והשתנתה בעצמה. עם הזמן ביז פיזר המון קלישאות נחמדות באוויר – "השראה היא משאב שלא נגמר", "אפשרויות תמיד ניתנות ליצירה". אימצתי בחום חלק מהן. בנוסף, הוא שיתף מספר סיפורים מעניינים ויוצאי דופן על השימוש בטוויטר, כמו לדוגמא סיפורה של מאפייה שהחלה לעדכן בטוויטר מתי יוצאות עוגיות חמות מהתנור, ובחור שנסע למצריים כדי לצלם הפגנות שעדכן ממצרים שעצרו אותו ושוחרר לאחר מספר שעות אחרי שהמשפחה שלו ראתה את העדכון.

האולם בהכנות אחרונות.
בזמן קבלת הפנים
בכנס היו כמות גדולה של אנשים בשלושה איזורים שונים
בחור שנון וחינני שכיף להקשיב לו

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