![]() |
אבטחת מידע, 2 שאלות וקצת עזרה
דבר ראשון, איך אני יכול לעשות שיהיה במשתה מסויים רק מספר ולא טקסט? (URL הזרקות)
דבר שני, איך אתם מאבטחים? עם איזה שיטות אתם עובדים נגד הזרקות? אתם מסננים מילות SQL ? \: אשמח לקבל קצת מידע לגבי זהתוה :-) |
אם אתה רוצה לעשות משתנה מסויים רק מספר, זה לא אפשרי בPHP.
מה שכן, עם PHP 5 אתה יכול לסנן טיפוסים של ארגומנטים שמועברים לפונקציה, זה נקרא Type Hinting. למשל אתה יכול ליצור פונקציה כזו: קוד:
function setNum(int $value) קוד:
setNum("this is a string") // תחזיר שגיאה דרך נוספת לעשות את זה, זה עם ביטויים רגולרים, אבל אין צורך. בכל מקרה, בPHP לפי מה שאני בדקתי בכמה ממשקים של מסדי נתונים, יש בהם פונקציה שנקראת real_escape_string, למשל, אם אתה משתמש במסד mysql, אתה יכול להשתמש בפונקציה הזאתי שתטפל בתווים האסורים בשאילתה שלך: mysql_real_escape_string. אם אתה רוצה פונקציה שלא דורשת עבודה עם מסד נתונים מסויים, אז קח: קוד:
function real_escape_string( $unescaped_string ) { |
שאלה, לכל משתנה שנשלח לשאילתא אני אמור להצמיד הפונקציה mysql_real_escape_string ?
ומה עם שאילתות שאני מוציא? (שולח מהשרת למשתמש) אגב לא הבנתי כ"כ את הפונקציה, הבנתי שהיא מסננת ירידת / שבירת שורה מספרים הקסדצימלים, גרש וגרשיים מה זה אבל x1a ?, ואיך אני משתמש בה? בצורה הזו זה בסדר?: PHP קוד:
|
בקשר לשאלה הראשונה, במקום שיזרוק שגיאה..
אתה יכול לבדוק עם הפונקציה הזאת אם המשתנה מכיל רק מספרים: http://il.php.net/manual/en/function.is-numeric.php בהצלחה |
ציטוט:
בקשר לקוד שכתבת, אם תכתוב רק real_escape_string($name); זה לא טוב, כי הפונקציה לא עובדת עם רפרנס והיא רק מחזירה ערך, זאת אומרת שאתה צריך לעבוד בצורה כזו: קוד:
// סתם דוגמא, אתה יכול לשים פה מה שאתה רוצה |
אקי, נגיד שזה בסדר עד עכשיו, אבל אני רוצה לאבטח הזרקות GET
לדוגמא אם יהיה במשתנה מסויים תו מסוכן הוא יפנה ישר לעמוד מסויים או יסנן אותו משהו כזה. אני לא מצליח להכניס את הפונקציה mysql_real_escape_string למשתנה GET זתומרת, זה לא מועיל היא לא עושה כלום ? אני רוצה שלא יוכלו לפצל לי את השאילתא ובכלל לא לשלוח שאילתות במשתנים לסנן את התווים שלהם ומילות שמורות.. |
בנוגע למספרים
אתה יכול לקבל גם מספר שכולל את האות E ואני מניח שזה קצת גדול עליך ולא תכננת שיעבירו בכתובת.. זה היה עובר את הפונקציה של שילה אבל לא את זו: PHP קוד:
|
אגב, טיפ קטן.. אם יש לך שדה במסד שאתה יודע שהוא צריך להיות ערך מספרי בלבד - אז כבר במסד הנתונים שים אותו מסוג INT.
|
כל הזמנים הם GMT +2. הזמן כעת הוא 09:56. |
מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ