1 / 8

קורס PHP

קורס PHP. אבטחה. cookies. sessions. headers. void header ( string string [,bool replace[, int http_response_code]] ).

lois
Download Presentation

קורס PHP

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. קורס PHP אבטחה cookies sessions headers void header ( string string [,bool replace[, int http_response_code]] ) הפונקציה header משמשת על-מנת לשלוח לדפדפן כותר (=header). הכותרים הם אלה שנותנים לקליינט (=תוכנת הלקוח) הוראות ו"מסבירים" לו דברים שונים. דוגמאות לכך הם כותרים ש"אומרים" לדפדפן כי תוכן העמוד יהיה קובץ, יש לכפות על המשתמש הורדה, או להפנותו מיד לעמוד אחר. ככותרים ניתן להחשיב למשל את תגי הMETA בHTML, וזו הסיבה שהם מופיעים בHEAD דווקא, משום שעל הדפדפן לקרוא אותם בטרם הוא מתחיל לעבד העמוד. שימו לב כי על כל הכותרים תמיד להישלח בטרם אתם שולחים איזשהו פלט לדפדפן, שהרי על הדפדפן "לדעת" כיצד לעבד את אותו פלט. אחרת תקבלו שגיאה בסגנון: “headers already sent by…” שימו לב! גם ירידת שורה נחשבת לפלט!

  2. קורס PHP אבטחה cookies sessions headers void header ( string string [,bool replace[, int http_response_code]] ) <?phpheader("Location: http://www.example.com/");/* Redirect browser *//* Make sure that code below does not get executed when we redirect. */exit;?> כותר Location הוא אחד השימושיים ביותר. הוא מאפשר לנו לגרום למשתמש לעבור עמוד באופן מיידי. שימו לב שמכיוון שמדובר בכותר, הדפדפן הוא שאחראי לניווט לעמוד שהזנו בו, לכן אם נרצה שהמשתמש יועבר עמוד על-מנת שלא יראה את מה שקורה בהמשך העמוד נשתמש גם בפונקציה die או חברתה (=alias) exit על-מנת לוודא שהמשתמש לא יצפה בעמוד בשום פנים ואופן. לא נסקור את כל רשימת הכותרים מכיוון שקיימים רבים מדי. אם אתם מחפשים כותר מסוים ומעוניינים בהרחבה אודות השימוש בהם תוכלו להיכנס לכאן: http://il2.php.net/header **בהרצאות בהמשך אודות נושאים שונים דוגמת קבצים נשוב ונדגים שימושים נוספים.

  3. קורס PHP אבטחה cookies sessions headers באמצעות SESSIONS ניתן לשמור מידע אודות המשתמש לפרק זמן המוקצב בשרת. ברירת המחדל בשרת Apache בו אנו משתמשים היא 30 דקות. כאשר משתמש מתחבר לאתר נוצר עבורו ID שייחודי רק לו (SESSID). PHP משתמשת באותו ID על-מנת ליצור לאותו משתמש את הSESSION וכך נוצר אחד ייחודי עבור כל משתמש ומשתמש באתר. את הID של הSESSIONPHP שומרת במחשב הלקוח (ניתן גם להעביר דרך הURL, אך זוהי פעולה לא מאובטחת אותה לא הגדרנו בשרת). המידע על הSESSION לעומת-זאת ממוקם בשרת. החיסרון בSESSION הוא שהוא נסגר כאשר המשתמש סוגר את חלון הדפדפן, או כעבור פרק הזמן המוקצב בשרת. אתחול הSESSION נעשה באמצעות הפונקציה session_start(), אך מכיוון שמדובר על תקשורת בין השרת לקליינט אז מובן שיש להשתמש בפונקציה בטרם נשלח פלט כלשהו. הפונקציה תקרא את המידע של הSESSION הרלוונטי ותיצור את המערך הגלובאלי $_SESSION. הריסת הSESSION תתבצע ע"י הפונקציה session_destroy() הפונקציה session_unregister() היא האקוויולנטית לunset() רק שהיא משמשת לSESSIONS.

  4. קורס PHP אבטחה cookies sessions headers session_destroy() – מחיקת כל מידע הSESSION. session_unregister() – מחיקת SESSION בודד. <?php session_start(); if(!is_registered_session('refresh‘)) $_SESSION['refresh'] = 1; else $_SESSION['refresh']++; if ($_SESSION['refresh']>4) { session_destroy(); echo"you have already refreshed 5 times! i'll delete your session!"; } else echo"you have refreshed {$_SESSION['refresh']} times!"; ?>

  5. קורס PHP אבטחה cookies sessions headers bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure]]]]] ) כפי שציינו קודם, המגרעה בSESSIONS היא שלא ניתן לשמור על המשתמש מחובר למערכת באמצעותם. כשנרצה לשמור על המשתמש מחובר נשתמש בעוגיות אינטרנט, או בשמם העממי, cookies. כאשר אנו פועלים בשיטה זו חשוב מאוד להבין כי כל המידע נאגר בעוגייה, במחשב הלקוח! כלומר, ביכולת המשתמש להיכנס לעוגייה ובאמצעות עורך טקסט פשוט (ע"ע notepad) לקרוא אותה, או גרוע מזה, לשכתב את הערך בה וע"י כל להערים על המערכת שלכם ולהתחזות למשל למשתמש אחר באם מדובר במערכת משתמשים. כיצד ניתן להתגונן נסביר במדור "אבטחה" בהרצאה. השתלת העוגייה תתבצע באמצעות הפונקציה setcookie(). הפונקציה מחזירה TRUE באם השתלת העוגייה צלחה, הרי אל תשכחו שזו החלטת הקליינט אם לקבל את העוגייה או לא, ומכאן שלא תמיד ניתן להשתמש בעוגיות.

  6. קורס PHP אבטחה cookies sessions headers bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure]]]]] ) בפרמטר הראשון נזין את שם העוגייה שנרצה ליצור. בפרמטר השני נזין את הערך שיאוחסן בה. בפרמטר השלישי – חותמת זמן יוניקסית שמציינת תאריך תפוגה. אם לא נזין בפרמטר זה ערך, העוגייה תתפוגג לה יחד עם הSESSION. פרמטר רביעי הוא תחת איזה נתיב באתר ניתן יהיה להשתמש בעוגייה. למשל עוגיות שרלוונטיות רק לפורום נרצה שיהיו רלוונטיות רק ל-“forum/”. פרמטר חמישי הוא לדומיין שתחתיו ניתן יהיה לקרוא את העוגייה. פרמטר אחרון נוגע לאבטחה ועליו לא נסביר בהרחבה. נאמר רק שבPHP5 הוא TRUE כבר בברירת המחדל כך שאין צורך להזין לתוכו ערך.

  7. קורס PHP אבטחה cookies sessions headers bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure]]]]] ) לאחר השימוש בפונקציה יווצר לנו מערך גלובאלי בשם $_COOKIE, בדומה לSESSIONS המאפשר לנו לגשת לעוגיות. בנוגע לפרמטר השלישי, חותמת הזמן... ניתן להשתמש בפונקציה time() המחזירה את חותמת הזמן היוניקסית הנוכחית ואליה להוסיף את מספר השניות בו היא תפוג. למשל time()+3600 יגרום לעוגייה להמחק כעבור שעה. באותו עיקרון גם ניתן למחוק, אם נזין לעוגייה זמן של time()-1.

  8. קורס PHP אבטחה cookies sessions headers כפי שאמרנו קודם, בהשתלת עוגיות קיימת הסכנה שהמשתמש יצפה או ישנה את הערך שבעוגייה. באפשרותנו להתגונן מפני זה אם נעשה דבר דומה לנעשה בSESSION. ניתן את הדוגמה הקלאסית של מערכת משתמשים: כאשר משתמש מתחבר למערכת ניצור לו איזשהו ID שייחודי רק לו באופן רנדומאלי. למשל ניתן לעשות md5(microtime()+rand(1,9999)). אחר-כך נזין את הID שהתקבל יחד עם הIP של אותו משתמש לDB בטבלה שנקרא לה sessions. בטבלה הזו נשמור גם את הID של המשתמש המחובר כרגע, וכך בכל פעם נריץ שאילתת SELECT שתבחר היכן שID של הSESSION זה לזה שבמסד ותיקח את הID של המשתמש ואיתו תריץ שאילתת SELECT נוספת שתשלוף את כל המידע אודותיו מטבלת המשתמשים. באמצעות הID הייחודי שייצרנו המשתמש יצטרך להיות מאוד בר מזל ולדייק על אלפית השנייה על-מנת לקבל את אותו ID.

More Related