06-03-2009, 12:58
|
מנהל
|
|
חבר מתאריך: 26.07.08
הודעות: 6,473
|
|
ציטוט:
כל, אבל כל, קלט ממשתמש, חייב סינון. אולי אתה מסנן ולא יודע (למשל יש לך פרמטר של pageid ואתה עושה עליו case שמבצע פעולות בהתאם לערכים מסויימים - זה בעצם סינון שבו אתה מוודא שהקלט הוא אחד מהפרמטרים הידועים שקבעת...)
|
אתה מתכון ברירות..?
בעצם לפי המילון ל-"סינון" יש בין היתר את המשמעויות: ניפוי,ברירה, טיהור, ניקוי.
כך שזה מתאים גם לכאן.
תודה על הדיוק!
ציטוט:
ההפרדה בין GET ל POST היא כבר ממש לא הגיונית. כפי שהסברתי באשכול הקודם בנושא - זה ממש, אבל ממש לא משנה, באיזו מתודה המידע הגיע אל הקוד שלנו. בשתיהן - משתמש מרוחק, לא ידוע, שלא סומכים עליו, הוא יוצר המידע, והוא יכול לעשות במידע מניפולציה כרצונו. לכן בכל מקרה שהוא, צריך לסנן את הקלט כך שיתאים לקוד שלנו.
|
למה לא הגיוני? זה מסתדר ממש טוב... אני לא מצליח לראות שום בעיה שיכולה להיווצר מזה בעתיד.
בנוסף, גם בתקנים זה מוגדר להיות כך (ההבדל בין POST ל-GET), אז מה הסיכוי שישנו אותם אחרי שהם קיימים הרבה זמן?
ציטוט:
כמו כן, אתה גם לא יודע מה יהיה בעתיד, על איזה עוד טכניקות יחשבו. לכן, אם אני יודע שערך מסויים שאני מקבל אמור להיות מספר שלם בין מינוס 5 לפלוס 18, אז אני:
א) אעשה אליו cast ל int (או אשתמש ב intval)
ב) אבדוק עם if שהוא בין הערכים שאני מצפה להם, ואם לא, die(). לא איכפת לי שתהיה שגיאה כשמתקבל פרמטר שלא אמור להתקבל מקוד שאני תכננתי. אני יודע מה אני אמור לקבל, ואני אומר את זה למשתמש, ואם המשתמש מנסה להתחכם - את ההתחכמויות אפשר לשמור למקום אחר. את בדיקת הערכים בטופס (אם המקור הוא טופס) צריך לעשות ברמת קליינט, לפני שזה נשלח לשרת. אם זה נשלח בכל זאת, זה אומר שהקליינט "לא כל כך צדיק". שיקבל שגיאה.
|
א) מסכים, במקום להריץ פונקציות על מחרוזת בתהליך סינון הקלט, יש קלטים שצריך פשוט להפוך אותם ל-int/float.
ב) למה die? אולי למשתמש יש בעיה שהתקבל ערך כזה ולא אחר?
יכול להיות שיש קלטים שאתה לא יכול לבדוק אותם לפני כן (בלי AJAX). אם המשתמש בתמימות הכניס user name או password עם טעות?
רוב המשתמשים גם לא כ"כ מבינים במחשבים...
אני חושב שדרך העבודה שהצעתי היא פשוט יותר מדוייקת וגם פועלת לפי התקנים, שכאשר קבעו אותם חשבו טוב אם התקן הזה והזה הוא הדבר הנכון. ולכן גם מהסיבה הזו, דרך זו אמורה להיות נכונה.
עריכה:
אם אני בונה מערכת גדולה אני צריך לצפות שיערכו את הקוד שלה בעתיד.
אם מישהו ייקבע בטעות ב-cookie שיהיה פרמטר עם שם שדומה לשם שיש לאלמנט בטופס או למשהו ב-get, זה יקבע overwrite ואולי גם לא ישימו לב לבעיה בהתחלה...
אני חושב שכשיש הפרדה ברורה בין דברים והגדרה מדויקת, כך המערכת שלך נהיית פשוטה יותר ואפילו טובה יותר. כאשר משתמשים במשתנה גלובאלי POST או GET או COOKIE וכו' במקום ב-REQUEST, אז כמות האפשרויות שלך גדלה (כלומר מודולריות) ואין סכנה של דריסת איברים.
נערך לאחרונה ע"י dorM בתאריך 06-03-2009 בשעה 13:07.
|