ארכיון עבור הקטגוריה אינטרנט

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

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

החלטתי לצ'פר משתמשי פיירסטטס שתורמים ולתת כמה פיצ'רים למי שתורם בלבד.
מכיוון שאני מקבל את התרומות דרך Paypal חשבתי שזה יהיה נחמד לדאוג לאיזה תהליך אוטומטי שישלח לתורמים אימייל עם לינק להורדה של הפיצ'רים הנוספים.
פניתי לאתר של Paypal, שתומך במשהו שנקרא IPN : Instant payment notification.
בקצרה, האתר של Paypal קורא לURL שאתם מספקים לו ומעביר לו פרטים על הטרנזקציה (מי זה, כמה הוא נתן, וכו').
האתר שלכם מאמת את הפרטים מול Paypal, ומכניס אותם לבסיס הנתונים ועושה מה שאתם רוצים.

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

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

$struery = "insert into paypal_cart_info(txnid,itemnumber,itemname,os0,on0,os1,on1,quantity,invoice,custom)
values ('"
.$txn_id."','".$_POST[$itemnumber]."','".$_POST[$itemname]."','".$_POST[$on0]. "','".$_POST[$os0]."','".$_POST[$on1]."','".$_POST[$os1]."','".$_POST[$quantity]."','".$invoice."','".$custom."')";
$result = mysql_query($struery) or paypal_die("Cart - paypal_cart_info, Query failed:<br>" . mysql_error() . "<br>" . mysql_errno());

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

מה שזה אומר זה שכל מי שהשתמש בקוד לדוגמא שלהם בלי לשים לב לבעיה (אני מניח ש99% מהמשתמשים) יצר לעצמו בעיית אבטחה בשרת, בדיוק בנקודה הקריטית שנוגעת לכסף.

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

מצגת מעניינת על הארכיטקטורה של פייסבוק לשמירת וגישה למיליארדי תמונות
fbp.jpg

אני מחובר לאינטרנט דרך תשתית הכבלים של HOT, ואף פעם זה לא עבד לי יותר מדי טוב.
הבעיה המרכזית שלי היא ניתוקים קצרים - דקה או שתיים בדרך כלל. כל פעם שהתלוננתי הגיע טכנאי חביב, חיבר מנחת שמעלה (??) את עוצמת הדציבלים בקו, או - אם כבר יש מנחת, הוציא אותו.
המשחק בעוצמות עזר בעיקר פסיכולוגית, כי אחריו הרגשתי שאין ניתוקים, עד שקלטתי שבעצם רק נדמה לי ויש גם יש.
במשך הזמן די התרגלתי לבעיה, אבל לאחרונה המצב החריף מאוד.
לפני כחצי שנה הגדרתי את הנתב שלי לשלוח לוגים למחשב בפרוטוקול syslog. מה שאומר שיש לי לוגים של חצי השנה האחרונה מהנתב, שמתלונן בקולניות כל פעם שהוא לא מקבל תגובה מהנתב של הISP (מה שאומר בעצם שהתנתקתי).
עם הזמן התחלתי להסתמך עליו כדי לזהות שאני מנותק, וראיתי עליה משמעותית בכמות הניתוקים.
כל פעם שהתלוננתי לHOT על ניתוק, הם שלחו אותו לבדוק את מצב הנוריות של המודם, שהיו בסדר בדרך כלל כי הניתוקים היו קצרים. ברגע שהבנתי את זה, התחלתי לבדוק בעצמי וראיתי שכל פעם שאני שם לב לניתוק, המודם יודע את זה - מה שאומר ללא ספק שזו בעיה של התשתית/המודם ולא של הנתב.
אני רוצה לציין שהשרות של HOT היה טוב, למרות חוסר היכולת שלהם לפתור את הבעיה, וכל פעם שהתלוננתי הם שלחו טכנאי שהחליף מודם, שיחק בעוצמות ובאופן כללי ניסה לעזור.
הטכנאים גם הגיעו בשעות שנוחות לי (שהן די מוזרות), ובדרך כלל הגיעו בזמן.

בכל אופן, אחד הטכנאים האחרונים שהגיע ניסה להבין מאיפה בדיוק מגיעה ההזנה, ולא כל כך מצא.
זה היה הפעם הראשונה שטכנאי שם לב לזה, וזה בהחלט שימח אותו לדעת שסוף סוף הגיע טכנאי שגם חושב לפני שהוא משחק בעוצמות.
אותו טכנאי החליט שהכי פשוט יהיה להתקין חיבור חדש לכל העסק, ולעקוף את המיסתורין של "מאיפה נכנס הכבל".
גישה מצויינת לדעתי, והחלטתי שאני נותן לHOT צ'אנס לתקן את הבעיה ככה לפני שאני עובר סופית לADSL.
לפני כשבוע הגיעו צמד טכנאים שהתקינו חיבור חדש, ובינתיים, לא שמתי לב לאף ניתוק, למרות שאני עדיין רואה ניתוקים קצרים בנתב, מה שאומר שהבדיקה של הנתב לא מאוד אמינה. (יש לה false positives).

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

גיליתי בפוקס שאם לוחצים CTRL+SHIFT+T בפיירפוקס 3 הוא פותח מחדש את הלשונית האחרונה שסגרתם.
מכירים עוד קיצורי דרך נסתרים ושימושיים בפיירפוקס?

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

כשנכנסים לאתרים כמו אתרי בנקים, או אתרי מסחר, רואים את אותו מנעול בדפדפן, שמציין שהתקשורת מוצפנת.
המנעול הזה אומר שהתקשורת עם השרת מתבצעת בפרוטוקול HTTPS.
חוץ מהצפנה, HTTPS גם מאפשר זיהוי של הישות המשפטית שמריצה את השרת, זה עובד כך:
בנק X פונה לחברה - ווריסיין למשל - שמנפיקה אישורי זהות (Certificate), ומשלם להם סכום יפה, 400$ לשנה למשל.
ווריסיין מוודא שבנק X הוא אכן בנק X, ולא האקר Z או קראקר K, למשל על ידי אימות טלפוני.
ברגע שווריסיין החליטה שהיא יודעת מי זה בנק X, ושהוא אכן ביקש ממנה את אישור הזהות, היא מנפיקה לו כזה, וחותמת עליו.
עכשיו בנק X יכול להשתמש באישור הזהות שלו כדי לתקשר בפרוטוקול HTTPS, ודפדפנים שמתקשרים איתו יוכלו להציג למשתמש את אותו מנעול, ובא לציון גואל.
המנעול מבטיח כמה דברים:
1. שגורם צד שלישי לא יוכל לצותת לתעבורה ולגנוב את הקוד הכניסה שלך לבנק.
2. שגרם צד שלישי לא יוכל להתחזות לבנק, ולגנוב את קוד הכניסה שלך לבנק.
3. שאם הבנק יגרום לכם נזק (למשל על ידי הפצת סוסון טרויאני ללקוחותיו הנאמנים), הוא לא יוכל להסתתר מאחורי השרת שלו, אתם יודעים מי הוא - בניגוד למצב הרגיל של גלישה שבו בדרך כלל אין לכם מושג באתר שלי מי אתם נמצאים. מעבר לזה, ווריסיין חתומים על זה שהוא אכן מי שהוא טוען שהוא. במקרה ומסתבר שבנק X הוא בעצם ז'וז'ו הקראקר, תוכלו לתבוע את ווריסיין על שהם הפרו את חובתם לוודא את הזהות של מי שמקבל מהם אישור זהות.

עם הזמן, נוצרה בעיה:
כל דיכפין החליט שהוא יכול להיות CA - Certificate authority כמו ווריסיין, ולהנפיק אישורי זהות.
יצרני הדפדפנים מצידם מיהרו לכלול את המפתח הציבורי של כל יצרן שהכתיר את עצמו מאוד בקלות, כדי להמנע מנחיתות מול דפדפנים מתחרים.
גודדי למשל, מוכרים בפחות מ30$ לשנה אישור זהות שמאשר בסך הכל שאתם בעלי האתר. כמובן שהם לא ממש מוודאים מי אתם (האימות הוא אוטומטי), וכל ספאמר/סקאמר יכול לקנות מהם מנעולים לאתר הטרויאנים שלו ממש בזול.
נוצר מצב שבו אותו מנעול שעד עכשיו יצר תחושת ביטחון אצל המשתמש, הפך למשהו שולי שאפשר לקנות בזיל הזול ובלי שום אימות אמיתי.
ממש זילות המנעול.

אז מה עושים?
כמובן, אישור זהות חדש - Extended validity certificate, שמחייב את המנפיקים לוודא בצורה יסודית למי הם מנפיקים אותו (CA שיפיק אישור זהות מורחב בלי לוודא באמת למי הוא נותן אותו, מסתכן בשלילת הזכות שלו להפיק אישורי זהות).
אותם אישורים יוצגו בצורה ידידותית למשתמש:
VA cert
רואים את הירוק הידידותי בשורת הכתובת? אז זה זה.
האישור החדש המורחב והמחוזק עולה כ1500$ לשנה אצל ווריסיין - פי שלוש וחצי.
אז בעצם ווריסיין מצאו דרך לחייב את הלקוחות שלהם הרבה ממה שהם חייבו אותם קודם, כדי לקבל את השרות שהם היו אמורים לתת גם ככה: לוודא את הזהות של הלקוח.
נחמד.
אני בטוח שהם יתחילו לזלזל באישורי הזהות הרגילים שלהם, ואולי אפילו לפגוע בתהליך הזיהוי, אחרי הכל - למי איכפת? מי שזה חשוב לו שישלם על EV.

אותי זה מעצבן.

לפני כחצי שנה כתבתי לעצמי אימייל TODO, שכותרתו: openid.
openid הוא פרוטוקול מבוזר לזהות מקוונת, או במילים אחרות: דרך לשמור את הזהות שלהם בשרת אחד, ולא ב950 אלף.
עם openid, הזהות שלהם היא url, שמאפשר זיהוי נוח שלכם בשרת לבחירתכם, בלי למסור את הסיסמא לשרת שרוצה לזהות אתכם.

הסיפור הוא שנתקלתי באתר או שניים שדרשו כתובת openid, ולא ממש התחשק לי לפתוח זהות openid באתר צד שלישי, הרי כל הנקודה בopenid למול שרותים כמו פספורט של מייקרוסופט (זצ"ל) היא שopenid הוא מבוזר ולא תלוי בספק מסויים.
חוץ מזה, אני מעדיף לשמור את הזהות שלי קרובה לבית - או אפילו.. בבית:
את שרת הדואר, שרת הJabber ועכשיו שרת הopenid אני מריץ מהמחשב בסלון.
כמו הרבה אימיילי TODO אצלי בתיבה, האימייל הזה נשכח, עד שקראתי פוסט על openid שכתב ניצן.

יש כל מני שרתי openid, מסובכים יותר או פחות.
אחד הפשוטים שבהם הוא phpMyID, שמממש פחות או יותר בדיוק את מה שאני צריך:
שרת openid למשתמש בודד (אפשר כמה משתמשים אם רוצים, וזה אפילו קל).
ההגדרה שלו כוללת עריכת קובץ PHP, הוספה של שם משתמש וגיבוב md5 של הסיסמא ועוד כמה דברים, וזהו.
יותר קשה ממה שזה נשמע, ככה נראות השורות שצריך לערוך:

'auth_username' => 'test',
'auth_password' => 'e8358914a32e1ce3c62836db4babaa01'

הקישקוש בסיסמא הוא גיבוב md5 של username:phpMyID:password, יש הרבה דרכים לחשב אותו, למשל:

echo -n 'username:phpMyID:password' | openssl md5
echo -n 'username:phpMyID:password' | md5sum

(אני בטוח שמשתמשי חלונות ימצאו דרך לחשב md5 בחלונות).

יש פוסט מאוד נחמד שמסביר את כל זה יותר בפירוט אצל סאם רובי.

אז עכשיו כתובת הopenid שלי היא http://omry.yadan.net , כתובת חביבה שאפילו אני אזכור ;).

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

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

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

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

עקבו ברבבותיכם!

למי שמחפש פתרון תומך לבדיקות יחידה (Unit test) של קוד PHP, יש את PHPUnit.
PHPUnit יהיה מוכר מאוד לכל מי שהשתמש אי פעם בJUnit, ולו משום שהוא port מוצהר של JUnit לשפת PHP.
התחלתי לכתוב בדיקות יחידה לחלקים של פיירסטטס, ואולי יהיה פוסט נוסף על העסק הזה בהמשך.


YUI
- יואי, או Why you aye, הוא ספריית JavaScript שמפותחת ביאהו.
יואי משוחרר ברשיון BSD (רשיון תעשו מה שאתם רוצים עם הקוד), וכולל טאבים, עצים, אנימציות, השלמה אוטומטית ועוד פחות או יותר 252 דברים שאולי תרצו לבדוק אם אתם רוצים להכניס עניין באפליקציית WEB שאתם מפתחים.
אני שוקל להתחיל להשתמש בYUI בפיירסטטס - לפחות באופן חלקי, במקום הערמה המגוונת של ספריות חיצוניות שיש שם כרגע.

על YUI שמעתי בפעם הראשונה בפודקסט המצויין של ליאו לפורט - Floss weekly.
למי שמתעניין בקוד פתוח - מומלץ מאוד.
בכל פודקסט (לא ממש פעם בשבוע), יש ראיון עם דמות מפתח מעולם הקוד הפתוח.
החל ממפתחים שהתחילו שפות (PHP, פיתון), דרך מיסד וויקיפדיה, אבן מוגלן ועוד.
מאוד מעניין ומומלץ.

FireStats icon ‏מריץ FireStats‏