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

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   תכנות - מדריכים, code snippets (https://hosts.co.il/forums/forumdisplay.php?f=68)
-   -   [מדריך] PHP - כיצד להשתמש בGET בצורה מאובטחת! (https://hosts.co.il/forums/showthread.php?t=22995)

-VladK- 01-06-06 10:46

[מדריך] PHP - כיצד להשתמש בGET בצורה מאובטחת!
 
אהלן אנשים!
היום ביקשתי עזרה כיצד לאבטח את הGET...הביאו לי כמה שיטות ...כמו כן גם הרצתי חיפוש פה בפורום וגם בPHP העולמי....ומצאתי מלא דרכים שאם לשלב את כולם קשה מאוד (אם בכלל אפשרי) לפרוץ או לפגוע בכל דבר אחר!

קודם כל אני רוצה להתחיל בבדיקה האם בכלל השתמשו בGET....ואם אכן כן אז שנמשיך בבדיקה...
איך אנחנו בודקים אם אכן הקלידו GET? בצורה כזאת:
PHP קוד:

if(isset($_GET['act'])) {


פשוט נכון?...תחליפו את הACT במה שאתם רוצים...אוקיי עכשיו בדקנו אם אכן השתמשו בGET...
אוקיי נגיד והשתמשו בGET שאנחנו צריכים (ACT במקרה הזה) אז עכשיו נגיד והGET שלנו הוא סוג של עמוד...עמוד כתבות, צפיה בפורום או כל דבר אחר...ואנחנו יודעים מראש מה אנחנו צריכים...אז נגיד ואנחנו צריכים כמה עמודים...אז אנחנו בודקים שמה שנמצא אחרי השווה בGET שלנו הוא אכן מה שאנחנו צריכים לדוגמה:
PHP קוד:

if(($_GET['act'] != "idx") and ($_GET['act']!= "register") and ($_GET['act']!= "articles") and ($_GET['act']!= "login") and ($_GET['act']!= "forums") and ($_GET['act']!= "manage") and ($_GET['act']!= "funny") and ($_GET['act']!= "mondial") and ($_GET['act']!= "pics")) { 

אוקיי עכשיו אם אכן אחד מהם הוא מה שהקלדנו נעבור לבדיקה הבאה...אם הקלדנו PICS לדוגמה...אז שיעשה הדפסה של נתונים...לדוגמה:
PHP קוד:

if($_GET['act'] == "pics") {
$tipe "תמונות הגולשים";
echo 
"תמונות";


אוקיי בדקנו...יופי...הכל מצויין...עכשיו נגיד ואנחנו צריכים שהACT יהיה מספר...כאן באים קצת יותר בדיקות...הבדיקה הראשונה שלנו היא האם המספר שהקלידו הוא אכן מספר (יש כאלה שמקלידים מילים במקום מספרים) הבדיקה מתבצעת כך:
PHP קוד:

if (is_numeric($_GET['id'])) { 

אוקיי בדקנו אם אכן מה שהוקלד זה באמת מספר...הכל טוב יפה אבל כפי שככול הנראה ידוע לכם שיש אותיות שיש להן ערך מספרי...לדוגמה האות e. כותבים אותה בצורה כזאת:
PHP קוד:

12e54 

איזה באסה...הPHP חשב שזה מספר למרות שזה לא...יש פיתרון לזה...הפונקציה החדשה שהיום מצאתי:) (שבגללה אגב כתבתי תמדריך...) הפונקציה נקראת intval והיא מוריד את מה שלא צריך במספר כלומר אם יש לי את המספרים הבאים:
PHP קוד:

12e54
13.5485 

כותבים נגיד:
PHP קוד:

    $getID $_GET['id'];
    
$getID intval($getID); 

הוא יעיף את מה שלא צריך...כלומר התוצאה תצא:
PHP קוד:

12
13 

אלא יהיו התוצאות (מה שרצינו לא?)

מגניב נכון? אוקיי והנה הבדיקה אחרונה שהיא קשורה כבר לMYSQL...
נגיד ואתם רוצים להשתמש בGET שהוא ID שהקלידו כקלי עזר בשביל להוציא נתונים מהמסד...כלומר בצורה כזאת:
PHP קוד:

            $getID $_GET['id'];
            
$getID intval($getID);
            
$sart1 mysql_query("SELECT * FROM Articles WHERE artID = $getID"); 

אז נגיד וכתבו בGET מספר שאינו קיים במסד נתונים...מה עושים? הרי זה ידפיס שגיאה שמאוד לא תורמת לעיצוב של האתר? ניתן לעשות בדיקה שבודקת אם אין שורה במספר שהוקלד אז שתחזיר שגיאה שאתם יכולים לקבוע איך היא תראה! הנה היא:
PHP קוד:

if($count == 0) {
    echo 
"המאמר אינו קיים!";


שמחים הא?

עכשיו יש לכם GET מאובטח מאוד ונוח יחסית לשימוש...

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

כל הזכויות שמורות לולדי קוצ'רוב (CriSis) על כתיבת מאמר זה! לפרטים נוספים אנא צרו קשר באימייל:
kucherov@bezeqint.net

ohadamar 01-06-06 10:48

תודה על המדריך ולדה =]

-VladK- 01-06-06 10:51

ציטוט:

נכתב במקור על ידי ohed
תודה על המדריך ולדה =]

בקשה אוהד! כפרה אליך!

Alter 01-06-06 10:52

אממ נחמד, יעזור לי באתר שאני עושה, למרות שהכנסתי כבר את כל מה שציינת פה =]

-VladK- 01-06-06 10:54

ציטוט:

נכתב במקור על ידי Alter
אממ נחמד, יעזור לי באתר שאני עושה, למרות שהכנסתי כבר את כל מה שציינת פה =]

את כל זה?!?

BBman 01-06-06 10:54

יפה מאוד , בהצלחה בהמשך!

eXtaZa 01-06-06 10:55

כל הכבוד! מדריך טוב!
ובקשר לAlter ... למה אתה חושב שהוא לא הכניס את כל זה?
אולי כתבת פה הרבה ובגלל זה זה נראה לך ארוך, אבל אם תסתכל רק על הקודים שצריך להכניס לדף כדי לאבטח אותו, תראה שזה בסך הכל כמה שורות... |קורץ|

meshuga 01-06-06 10:55

נוסף למדריכים.

-VladK- 01-06-06 10:58

ציטוט:

נכתב במקור על ידי meshuga
נוסף למדריכים.

חחח אם לא היתה מוסיף היתי מפוצץ אותך! השקעתי שעה על זה !

Alter 01-06-06 11:23

CriSis אין פה הרבה קודים =]
וכן הכנסתי הכל (טוב כמעט הכל, יש דברים שלא הייתי צריך לבדוק בכלל...)
והקוד השני שנתת (שאם אני יודע מראש את הact..) אז זה מהנושא שאני פתחתי שחיפשתי דרך לעשות את זה =]
סהכ יש פה כמה שורות קוד קצרות, בדיקה שהGET קיים, בדיקה שהתוכן שלו קיים, בדיקה שהתוכן שלו מתאים למה שאני רוצה, ובדיקה שהמידע קיים בבסיס נתונים. די בסיס =]


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

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