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

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

Alon.R 13-07-06 01:19

[PHP] מה הייעוד של שני הפונקציות הבאות
 
PHP קוד:

mysql_real_escape_string
mysql_escape_string 

הבנתי שזה קשור ל mysql inj ולאבטחה כמובן... השאלה היא מה הייעוד שלהן? מה הן עושות וכיצד הן עוזרות... (השעה 2 וחצי ככה שאני לא ממש מצליח להבין..)

miniature 13-07-06 01:29

mysql_escape_string - הוספת תווים לפני תווים מיוחדים.
mysql_real_escape_string - השמטת / החלפת תווים מיוחדים.

לא בטוח, תמיד תוכל להסתכל באתר www.php.net

Alon.R 13-07-06 01:40

הסתכלתי...
ואני גם לא בטוח...
יהיה נכון להשתמש בייעוד שלהן ככה:

mysql_real_escape_string($var);

mysql_query("SELECT............. WHERE id=$val");

ואז...בשביל להוציא לפלט את הערך שהוא חיפש למשל...
&quot ב" רגילאז נחליף את ה

str_replace("&quot",""",$val);

echo "נמצאו ..... תוצאות לערך'" . $val . "'";

RS324 13-07-06 13:02

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

miniature 13-07-06 13:08

ציטוט:

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

ומהו?
לאחר החזרת התווים מהמסד יש משהו טוב שאפשר לעשות (הקוד לא שלי):
PHP קוד:

 function quote_smart($value

   
// Stripslashes 
   
if (get_magic_quotes_gpc()) { 
       
$value stripslashes($value); 
   } 
   
// Quote if not a number or a numeric string 
   
if (!is_numeric($value)) { 
       
$value "'" mysql_real_escape_string($value) . "'"
   } 
   return 
$value



RS324 13-07-06 13:13

טוב אז ככה, קודם כל בקובץ גלובלי עשיתי שיבדוק אם MEGIC QOUTES פעיל או לא
אם כן מסיר את כל הסלאשים שהחרא הזה הוסיף ואז שם אותו על 0
ini_set(magic_qoutes_runtime,0) משהו כזה - לא זוכר בדיוק,
לאחר מכן עשיתי פונקציה שנקראת CLEAN שעובר על המערך ועושה MYSQL_REAL_ESCAPESTRING או את השני - לא זוכר כבר.
וזהו בעת ההכנסה למסד לא הייתה לי בעיה
ובעת ההוצאה מהמסד אין לי בעיה... וגם בדקתי עבור SQL INJECTION ואין עם זה שום בעיה

miniature 13-07-06 13:31

ציטוט:

נכתב במקור על ידי RS324
טוב אז ככה, קודם כל בקובץ גלובלי עשיתי שיבדוק אם MEGIC QOUTES פעיל או לא
אם כן מסיר את כל הסלאשים שהחרא הזה הוסיף ואז שם אותו על 0
ini_set(magic_qoutes_runtime,0) משהו כזה - לא זוכר בדיוק,
לאחר מכן עשיתי פונקציה שנקראת CLEAN שעובר על המערך ועושה MYSQL_REAL_ESCAPESTRING או את השני - לא זוכר כבר.
וזהו בעת ההכנסה למסד לא הייתה לי בעיה
ובעת ההוצאה מהמסד אין לי בעיה... וגם בדקתי עבור SQL INJECTION ואין עם זה שום בעיה

אים משהו יותר פשוט? :-0

RS324 13-07-06 15:16

זה הכי פשוט שיש כי לדוגמא לפני שאילתה אני פשוט עושה
$_GET = clean($_GET)
וזהו... זה בטוח מכל SQL INECJTION שתרצה

miniature 13-07-06 15:38

מה הפונקציה clean עושה?

RS324 13-07-06 17:23

מגנה מפני SQL INJECTION בעזרת MYSQL_REAL_ESCAPE_STRING על כל אברי המערך
לפני שאילתה.

יש כמובן עוד פונקציה שמבטלת את ההשפעה של magic_qoutes_runtime שאני מריץ אותה בכל מקרה לפני.


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

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