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

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

Hezi & BomBas 18-03-09 18:51

ציטוט:

נכתב במקור על ידי The Chosen Generl (פרסם 703648)
תחליף בשורה הזו, מה זה הבלאגן שעשיתם לו שם:


מעבר לזה, אתה יכול לוודא שהid הוא מספרי, תעשה על ידי בהצלחה..

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

סניר (אני צודק?), קודם כל תוריד את הרווחים אחרי הגרש ('):
PHP קוד:

$query mysql_query("SELECT * FROM random_users WHERE id = '"$id ."' "); 

דבר שני, אתה לא יכול לעשות isset ואז לעשות השוואה. תוריד את ההשוואה מהתנאים, אתה לא צריך אותה.(תשאיר רק את ה ISSET)

ופה:
PHP קוד:

if (isset($_GET['update']) == $id) { 

תוריד את ה ISSET.

SniR-S 18-03-09 19:29

*שניר.
וכן, כרגע פחות חשוב האבטחה.
הורדתי רווחים, והורדתי את ISSET..
מה עכשיו?

intercooler3819 18-03-09 23:28

ציטוט:

נכתב במקור על ידי Hezi & BomBas (פרסם 703672)
לא חושב שמה שנתת לו יעזור לו, זה לפי דרך כתיבה.. לפי דעתי הדרך שלך פחות נוחה.
בקשר ל is_numeric - אתה צודק, אבל על אבטחה אנחנו לא מדברים עכשיו.

סניר (אני צודק?), קודם כל תוריד את הרווחים אחרי הגרש ('):
PHP קוד:

$query mysql_query("SELECT * FROM random_users WHERE id = '"$id ."' "); 

דבר שני, אתה לא יכול לעשות isset ואז לעשות השוואה. תוריד את ההשוואה מהתנאים, אתה לא צריך אותה.(תשאיר רק את ה ISSET)

ופה:
PHP קוד:

if (isset($_GET['update']) == $id) { 

תוריד את ה ISSET.

אני בטוח שהוא לא צריך הקסה או טווחים של אינטים שכוללים E
IS_NUMERIC הוא לא בדיוק השיא אבטחה למקרה הספציצי הזה

עדיף להשתמש ב
PHP קוד:

<?php
if(preg_match("#^[0-9]+$#"$str)) return TRUE;


AlmogBaku 19-03-09 00:34

ציטוט:

נכתב במקור על ידי nitsanbn (פרסם 703730)
אני בטוח שהוא לא צריך הקסה או טווחים של אינטים שכוללים E
IS_NUMERIC הוא לא בדיוק השיא אבטחה למקרה הספציצי הזה

עדיף להשתמש ב
PHP קוד:

<?php
if(preg_match("#^[0-9]+$#"$str)) return TRUE;


טיפשי לגמרי. זה אותו דבר.



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

Daniel 19-03-09 16:04

אני לא מבין את שניכם, למה intval ולמה לנקות את כל מה שלא מספרים? הדוגמא הכי פשוטה, מה הבעייה עם SELECT field FROM table WHERE field1="'.mysql_real_escape_string($value).'" - דוגמא כדי להעביר את הרעיון.

SniR-S 19-03-09 16:08

סבבה לגמרי מה שאתם אומרים, כל אחד והשיטה שלו זאת שנוחה לו.
אבל אתם סטיתם לגמרי מהנושא.. :)

AlmogBaku 19-03-09 17:24

ציטוט:

נכתב במקור על ידי MasterT (פרסם 703798)
אני לא מבין את שניכם, למה intval ולמה לנקות את כל מה שלא מספרים? הדוגמא הכי פשוטה, מה הבעייה עם SELECT field FROM table WHERE field1="'.mysql_real_escape_string($value).'" - דוגמא כדי להעביר את הרעיון.

חחחחחחח למה?
כי זה מספר?!
אתה לא מכניס מספר עם גרשיים!

daMn 19-03-09 18:22

במקרה ואתה יודע שהקלט שלך הוא ערך מספרי משתמשים בהמרה (int) או לחילופין intval ואפשר גם בis_numeric על מנת לקבל ערך בוליאני בחזרה.
אין טעם להשתמש בregex, אני בטוח שהפונקציות שPHP איפשרו לנו יותר מהירות בregex.

Daniel 19-03-09 19:46

ציטוט:

נכתב במקור על ידי Baku (פרסם 703810)
חחחחחחח למה?
כי זה מספר?!
אתה לא מכניס מספר עם גרשיים!

אני אודה לך אם את הדעות שלך תביע בצורה מכובדת - בין אם הן נכונות או לא.

ואתה יכול לתת לי סיבה למה לא לעשות את זה? MySQL עובד מצויין עם זה.

daMn 19-03-09 20:18

ציטוט:

נכתב במקור על ידי MasterT (פרסם 703841)
אני אודה לך אם את הדעות שלך תביע בצורה מכובדת - בין אם הן נכונות או לא.

ואתה יכול לתת לי סיבה למה לא לעשות את זה? MySQL עובד מצויין עם זה.

כי הרעיון שאתה רוצה שייכנס למסד ערך שהוא מספרי וmysql_real_esacape_string לא מונע מלהכניס סטרינג.


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

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