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

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

FuZuL 20-02-08 22:25

[php] חסימת הזרקות של get
 
מה הדרכים לחסום הזרקות דרך הGET?
עד כה עבדתי רק עם הצפנות שאני יצרתי..
ואם אפשר דוגמאות של זה..

DanielS 21-02-08 07:26

פשוט לוודא שיהיה אפשר להכניס רק מה שאתה רוצה שיוכנס.
אם זה ID מהמסד אתה צריך לבדוק אם הID שהוא מנסה לבקש קיים בכלל אם לא להציג עמוד שגיאה / לא להציג פשוט תוצאה של הGET.
אפשרות להכניס רק תווים חוקיים. נגיד לחסום הכל ולאפשר רק מספרים או רק אותיות

וכדו'.
וכל אלו יעזרו לך באבטחה.

hi_sorie 21-02-08 09:56

ציטוט:

נכתב במקור על ידי FuZuL (פרסם 610598)
מה הדרכים לחסום הזרקות דרך הGET?
עד כה עבדתי רק עם הצפנות שאני יצרתי..
ואם אפשר דוגמאות של זה..

הדרך לדעתי הכי טובה לחסום הזרקות זה :
לקחת במערך את כל השאילתא בכתובת למנוע ' " > < ואחרי זה למנוע כל מיני מילים לא רצוייות כמו union ואלה ...

reXtea 21-02-08 13:12

כמה טיפים,
א. עזוב הצפנות... זה מבלבל את הגולשים.
ב. במידה ואתה רוצה רק ערכים מספריים נגיד כמו ID תשתמש בפונקציה intval...
ג. פשוט תעשה בדיקה אם הכתובת מכילה כל מיני תווים לא חוקיים ואז תציג שגיאה...
ד. תסנן כל מיני תווי HTML וכו'.

בהצלחה :]

DanielS 21-02-08 13:18

ציטוט:

נכתב במקור על ידי hi_sorie (פרסם 610662)
הדרך לדעתי הכי טובה לחסום הזרקות זה :
לקחת במערך את כל השאילתא בכתובת למנוע ' " > < ואחרי זה למנוע כל מיני מילים לא רצוייות כמו union ואלה ...

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

כי אחרת אתה שוכח כל מיני דברים לחסום לכן עדיף לחסום הכל ולאפשר מה שאתה צריך.

תחשוב על זה ככה :
מה היית מעדיף ?
לנעול דלת אחת ולשכוח לנעול אחרת ולהשאיר חלון גדול פתוח.או לנעול את כל הדלתות ולפתוח רק את זה שאתה יוצא ממנה . ;)

hi_sorie 21-02-08 13:45

ציטוט:

נכתב במקור על ידי DanielS (פרסם 610673)
לדעתי טעות גדולה של הרבה מתכנתים היא שהם מאפשרים הכל וחוסמים חלק.
צריך לעשות בידיוק ההפך.
לחסום הכל ולאפשר מה שאתה צריך.

כי אחרת אתה שוכח כל מיני דברים לחסום לכן עדיף לחסום הכל ולאפשר מה שאתה צריך.

תחשוב על זה ככה :
מה היית מעדיף ?
לנעול דלת אחת ולשכוח לנעול אחרת ולהשאיר חלון גדול פתוח.או לנעול את כל הדלתות ולפתוח רק את זה שאתה יוצא ממנה . ;)


לא קשור ...
במערכת דינאמית אתה לא יכול לשלוט על הערכים של GET בגלל זה טוב יותר להשתמש ב POST ...
ב POST סיננתי 19 אלף האקרים נובים.
אבל מה שאתה אומר זה לחסום את כל ה GET ולהשתמש רק במה שאתה צריך ...
ואם תוך כדי השימוש במערכת הוא שולח נתונים ב GET כמו כתובת או בא לו להגיד delete ? אז מה ? לא לאפשר...

מה שכן ... צריך להריץ את כל הערכים שקיבלת כך :

PHP קוד:

     foreach ($_GET as $value

ולחסום

PHP קוד:

    $value htmlspecialchars($valueENT_QUOTES)
    
$value urlencode($value


DanielS 21-02-08 14:19

ציטוט:

נכתב במקור על ידי hi_sorie (פרסם 610679)
לא קשור ...
במערכת דינאמית אתה לא יכול לשלוט על הערכים של GET בגלל זה טוב יותר להשתמש ב POST ...
ב POST סיננתי 19 אלף האקרים נובים.
אבל מה שאתה אומר זה לחסום את כל ה GET ולהשתמש רק במה שאתה צריך ...
ואם תוך כדי השימוש במערכת הוא שולח נתונים ב GET כמו כתובת או בא לו להגיד delete ? אז מה ? לא לאפשר...

מה שכן ... צריך להריץ את כל הערכים שקיבלת כך :

PHP קוד:

     foreach ($_GET as $value

ולחסום

PHP קוד:

    $value htmlspecialchars($valueENT_QUOTES)
    
$value urlencode($value


הכוונה בחסימה של הכל זה נגיד אתה רוצה לאפשר שיוכנסו רק מילים מסויימות נגיד רק blabla אז ככה :
PHP קוד:

<?php 
if($_GET['action']=="blabla"){ 
 echo 
"בלה בלה בלה"
}else 
 echo 
"דף רגיל";
?>

ככה שאם לא מוכנס בלה בלה אז זה מדפיס דף רגיל

hi_sorie 21-02-08 16:27

ציטוט:

נכתב במקור על ידי DanielS (פרסם 610684)
הכוונה בחסימה של הכל זה נגיד אתה רוצה לאפשר שיוכנסו רק מילים מסויימות נגיד רק blabla אז ככה :
PHP קוד:

<?php 
if($_GET['action']=="blabla"){ 
 echo 
"בלה בלה בלה"
}else 
 echo 
"דף רגיל";
?>

ככה שאם לא מוכנס בלה בלה אז זה מדפיס דף רגיל


הבנתי אותך עכשיו על מה דיברת ...
אבל זה ריאלי רק כאשר אתה מפנה מידע לדף חדש ב GET בתוך התיכנות לא משהו שקשור לצד הצופה...

Daniel 22-02-08 09:57

מה? לסנן SELECT? לסנן '?
שלחתי הודעה, "ואוו, הוא אמר 'חתול'", וקיבלתי באן.

אין לי עברית במחשב ליום, אז שלחתי הודעה, "Can you select the cookie?", וקיבלתי באן.


DanielS הסביר באופן מצויין.

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

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

hi_sorie: אני לא בטוח לגבי ה-19,000 האקרים, ובמידה ואתה עדיין בטוח,
עלה על דעתך שאולי ה-19,000 האלה הם גולשיים שנכנסו לדף שבכותרת יש delete?
וגם אם אתה בטוח עדיין, 19,000? אתה בטוח שלא הגזמת קצת?


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

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