filter_input – דרך טובה הרבה יותר לקבלת משתני GET או POST

לא מעט מתכנתים משתמשים ב-GET_$ או POST_$ כאשר הם רוצים לקבל פרמטרים של GET או POST. מדובר במשתנים גלובליים שמכילים את כל הפרמטרים. למשל, אם אני רוצה לקבל את הפרמטר myparam מהכתובת http://example.com?myparam=value, אני אכתוב את הקוד הבא:


$_GET['myparam'];

או:


$_REQUEST['myparam'];

מדובר בדרך טובה לקבלת משתנים. אבל, כפי שהמתכנת יקיר סיטבון העיר לי באחד המאמרים הקודמים, מדובר בדרך שעדיף שלא להשתמש בה. למרות שהיא פשוטה וקלה. ב-PHP החל מגרסה 5.2 אנחנו יכולים להשתמש בפונקצית filter_input – דרך טובה בהרבה לקבל כל פרמטר.

איך משתמשים בה? מאד פשוט! אם אני רוצה לקבל פרמטר GET של myparam זה מה שאני צריך להכניס:


filter_input(INPUT_GET, 'myparam');

מה היתרון הגדול של filter_input? שאני יכול להכניס גם פילטרים של PHP כפרמטר השלישי! למה צריך להכניס פילטרים? כדי לפלטר או לעשות סניטציה לפרמטר. כך למשל:


filter_input(INPUT_GET, 'myparam', FILTER_SANITIZE_EMAIL);

מבצע מיד סניטציה בפרמטר GET של מייל. אני יכול גם לפלטר ולא רק לעשות סניטציה. היתרון הגדול ב-filter_input הוא שמאד מאד קל להשתמש בפילטרים השונים. ואם קל להשתמש בהם, גם הסיכוי שאנחנו נשתמש בהם עולה.
ניתן להשתמש בפונקציה הזו כדי לקבל משתני שרת (SERVER_$) או משתני סביבה ולפלטר גם אותם. חלק מכם בוודאי ישאלו למה צריך לפלטר משתני שרת? התשובה היא שניתן לשנות חלק ממשתני השרת – כמו למשל ה-Referrer ואם אנחנו משתמשים בהם בסקריפט שלנו או כותבים אותם למסד הנתונים שלנו, תוקף מיומן מספיק יכול להשתמש בהם כנקודת תורפה לחדירה אל הסקריפט שלנו. אם נשתמש ב-filter_input במקום המערכים הגלובליים, אנחנו פשוט נתרגל לפלטר או לעשות סניטציה לכל פרמטר ופרמטר – גם אם אנחנו חושבים שהוא בטוח.

מבחינת מהירות או יעילות, אין הבדל ממשי – אבל מבחינת בטיחות, כדאי הרבה יותר להשתמש בזה.

מידע נוסף ודוגמאות נוספות ל-filter_input נמצאות בדוקומנטציה של PHP.

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

אהבתם? לא אהבתם? דרגו!

לא אהבתי בכלללא אהבתיבסדראהבתיאהבתי מאוד (1 הצבעות, ממוצע: 5.00 מתוך 5)

תגיות: פורסם בקטגוריה: פתרונות ומאמרים על פיתוח אינטרנט

יאללה, שתפו :)

אל תשארו מאחור! יש עוד מה ללמוד!

כתיבת תגובה

האימייל לא יוצג באתר.

רישום