הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   מחפש מישהו שיבדוק לי SQL INJECTION (https://hosts.co.il/forums/showthread.php?t=64898)

Daniel 08-07-08 00:12

ציטוט:

נכתב במקור על ידי Baku (פרסם 648716)
מה אתה אומר.


ואם בגלל זה הסקריפט יקרש?

אתה פונה אליי? למה אתה מתכוון "יקרש"? כי אני לא קרש =)

AlmogBaku 08-07-08 00:28

יקרש- ישבר, יקרוס.

וכן פניתי אליך.

BlueNosE 08-07-08 00:48

לא הבנתי למה אתה לא משתמש בINTVAL, דניאל, זה TYPE CASTING רגיל.
ולא הבנתי למה אמרת שהסקריפט יקרוס בגלל זה, אלמוג. מה הקשר?

AlmogBaku 08-07-08 09:58

במקרה הזה אומנם לא.

אבל במקרה שבו אני מזין לתוך שאילתה מספר, ולא בודק אותו עם intVal או floatVal, השאילתה פשוט תגרום למערכת לקרוס[במידה והיא לא תיקנית].
מה גם שלפעמים צריך לשקול את המצב ובמקום לבדוק אם הנתון מספר[is_numeric או is_int etc..], הרבה יותר חכם לעשות intVal. מכוון שלפעמים כשהמשתמש לא מזין מספר הוא מפסיד מזה. אך כשהמספר נדרש יש לוודא שהערך הינו מספרי.


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

Daniel 08-07-08 10:44

תכינו לעצמכם דף.
ותכתבו בו, "אני יודע שכל הנתונים שמגיעים אליי - צריכים להיות מוגני XSS ו-SQL INJECTION" = הברחת תגי HTML ו-SQL.

אצלי זה שחור לבן. מצידי, כל עוד אני יודע, ש-$this->input['val'] מוגן, לא אכפת לי לעשות,
PHP קוד:

SELECT dog FROM meow WHERE id='{$this->input['val']}' 

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

שחור ולבן, שחור ולבן.

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

BlueNosE 08-07-08 13:21

ולמה לא, לעבור סלקטיבית על אינפוט אחד שאתה רוצה לתקן?

לדוגמא, אצלי כבר הרבה זמן יושבת המחלקה Fetch בקוד.
היא מטפלת לי בPOST, GET, COOKIES ומערכים שאני מגדיר ידנית.
הפונקציות שהיא מכילה הן:
is שמקבילה לisset
is_empty שמקבילה לempty
is_int שמבצעת המרה לINT ע"י TYPE CASTING
is_bool, כמו למעלה
is_string
is_float
והכי חשובה -
secure - מבצעת החלפה של תווי HTML והזרקות XSS.


עכשיו, בעת קריאה לדף, הכל נכנס לARRAY בצורת ברירת מחדל - ואם צריך, אני פשוט רושם $post->secure('val') ומקבל ערך מאובטח. למשל, לTEXTAREA אני לא עושה את זה.


עכשיו בוא תסביר לי, איך $this->input['val'] מוגן, בלי לאבטח אותו אפילו פעם אחת? אתה טוען שלא צריך לבצע את הפעולה הזאת.

Daniel 08-07-08 14:25

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

BlueNosE 08-07-08 15:14

לא חכם במיוחד.. אני מדגיש את העניין של TEXTAREA, לדוגמא, שצריך בסה"כ addslashes.

Daniel 08-07-08 15:51

ציטוט:

נכתב במקור על ידי BlueNosE (פרסם 648842)
לא חכם במיוחד.. אני מדגיש את העניין של TEXTAREA, לדוגמא, שצריך בסה"כ addslashes.

למה? ב-textarea אפשר להכניס HTML, מה תעשה נגד זה?

BlueNosE 08-07-08 16:04

ציטוט:

נכתב במקור על ידי MasterT (פרסם 648857)
למה? ב-textarea אפשר להכניס HTML, מה תעשה נגד זה?

אני מדבר על TEXTAREA כמו FCK או סתם אחד שמוסיף תגים ל-HEAD.
לא נתקלת באחד כזה?


כל הזמנים הם GMT +2. הזמן כעת הוא 02:07.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ