05-07-2009, 12:58
|
|
|
חבר מתאריך: 07.10.04
הודעות: 1,277
|
|
3. אולי יעזור לך להבין, שכל קלט שאתה מקבל מהמשתמש הוא מחרוזת.
כל משתנה ב-post או get הוא מחרוזת. הלקוח שולח רק מחרוזות,
ובאותה מידה שהוא יכול לשלוח את המחרוזת "טקסט", הוא יכול גם לשלוח
את המחרוזת "1". אבל אתה מצפה למספר, ולכן יש דרך להמיר את המחרוזת "1"
למספר 1. למה זה טוב?
א. אם אתה רוצה לחבר שני מספרים. כידוע אי אפשר "לחבר" מחרוזות,
אמנם php הוא ימיר לך לבד את המחרוזות למספר, אבל בשפות אחרות
זה יעשה פעולה שנקראת "שרשור" (ב-php מסומן ע"י נקודה, ולא ע"י חיבור).
כלומר, אם תחבר מחרוזת "1" עם מחרוזת "1" תקבל "11" ולא 2 כמו שציפית.
ב. במחרוזת יכולים להופיע תווים "מסוכנים" (למשל, שיגרמו ל-SQL Injection),
ואילו במספר לא. לכן אם אתה מצפה למספר - הדרך הכי בטוחה היא להמיר
את המחרוזת למספר, וככה אתה בטוח שאין תווים שמסכנים את התכנית שלך.
בקוד הספציפי הזה, לדעתי, אין בעיות אבטחה. אבל הכתיבה עצמה בעייתית,
ובתכניות אחרות כתיבה כזאת עלולה לגרום לבעיות אבטחה.
בדיוק רשמתי תגובה מפורטת כאן, אתה מוזמן לקרוא:
אבטחת משתנים שמגיעים באמצעות GET.
|