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

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

לא מעט מתכנתים משתמשים ב-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.

פוסטים נוספים שכדאי לקרוא

פיתוח ב-JavaScript

Axios interceptors

תכנון נכון של קריאות AJAX באפליקציה ריאקטית וניהול השגיאות או ההצלחות עם פיצ׳ר נחמד של axios

תמונה של עציץ, רספברי פיי ורמקול
רספברי פיי

לגרום לעציץ שלכם לדבר

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

גלילה לראש העמוד