20-03-2015, 14:15
|
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
|
|
חבר מתאריך: 25.10.01
הודעות: 42,775
|
|
באמת לא היית חושב על וידוא הסכום שהלקוח מכניס באתר של הבנק?
בוא נראה מה זה לא יכול להיות לפי ההגיון:
זה לא יכול להיות תווים שאינם מספרים (כמו כל קלט מספרי אחר)
זה גם לא יכול להיות מספרים גדולים מדי - ודאי תגדיר תקרה מסויימת (פר פעולה ואף הגבלה יומית) כדי להמנע ממצבים בעיתיים. אז אתה תגדיר לעצמך מה טווח המספרים המותר.
בנקודה זו בעצם יש לך הגדרה של איזה סכומים הלקוח יכול להעביר. ואתה אומר לעצמך לדוגמה: "הוא יכול להעביר בין 0 ל 10,000 ש"ח בפעולה בודדת". עכשיו אתה מסתכל על המשתנה שקלטת ממנו, ושואל את השאלה: "האם המשתנה הזה יכול להכיל רק ערכים בין 0 ל 10,000 ש"ח?" ואיך אתה כותב את זה?
קוד:
if (sum > 0 and sum <= 10000)
(למה לא גדול-שווה אפס? כי לא מעבירים 0 ש"ח, זה לא הגיוני...)
והופ, טיפלת במספרים השליליים בלי שבכלל חשבת עליהם... כי הגדרת מה מותר. זה לא מעניין מה אסור, מעניין מה מותר. שים לב שלא הזכרתי את סימן המינוס כלל.
בתאוריה אתה תחשוב על הפעולות שאתה הולך לעשות עם המספר הזה: "אני הולך לעשות 'סכום בחשבון פחות הסכום הזה" ו"אני הולך לעשות "סכום בחשבון אחר ועוד הסכום הזה" - כלומר אני הולך להוסיף ולהחסיר מספרים. שאתה מדבר על חיבור וחיסור אתה צריך לחשוב כיצד הם יכולים להשפיע על הסכומים... ובפוטנציה לחשוב גם על האלמנט השלילי. בייחוד שאתה בנק אבל גם אם לא חשבת, עצם החשיבה החיובית על מה שאתה מצפה לו, ואימות בהתאם, סגרה לך את הפינה הזו, כפי שהראיתי לעיל...
כן, CAPTCHA נועד למנוע בוטים. או באופן כללי - נועד למנוע מתהליכים אוטומטיים להשפיע על האתר שלך. אז אתה צריך לחשוב "איזה תהליכים יכולים להשפיע על האתר שלי בצורה אוטומטית ובעייתית?" - ובוטים זה רק אחד מהם. קלטים ממקומות לא רצויים זה הדבר האחר. כן, אמרתי ש CSRF זה "מתוחכם יותר", אבל רוב הבעיות שנוצרות שם בעצם דומות לכל שאר הבעיות, וגם נובעות מאותה סיבה. זה לא שונה בהרבה ממניעה של אותו טופס מלהישלח פעמיים מתוך האתר שלך, הלא כן?
|