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

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

אדיר 04-08-12 23:20

ציטוט:

נכתב במקור על ידי perfeito (פרסם 853396)
אם כבר משתמשים ב mysql

http://php.net/manual/en/ref.pdo-mysql.php

בקצרה:
אחת הסיבות שעשו את הדרייבר הזה הוא בשביל להעביר את
ההגנה לדרייבר עצמו לדוגמא:

קוד:

$sth = $dbh->prepare('SELECT name WHERE id = :id');
$id = '1';
$sth->bindParam(':id', $id, PDO::PARAM_INT);


prepared statements ו- parameter binding אומנם חוסכים חלק מתהליך הסינון,
אך אין זה אומר שצריך לוותר גם על האימות.

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

perfeito 04-08-12 23:23

ציטוט:

נכתב במקור על ידי xPerfection (פרסם 853399)
prepared statements ו- parameter binding אומנם חוסכים חלק מתהליך הסינון,
אך אין זה אומר שצריך לוותר גם על האימות.

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

לא אמרתי שהוא צריך לוותר על אימות...
הוא פשוט שאל לגבי mysql injection...

אדיר 04-08-12 23:28

ציטוט:

נכתב במקור על ידי perfeito (פרסם 853400)
לא אמרתי שהוא צריך לוותר על אימות...
הוא פשוט שאל לגבי mysql injection...

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

RAS 05-08-12 09:52

אימות על ידי ctype_digit.

PHP קוד:

if (!ctype_digit($_GET['page'])
{
// show 404




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

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