مالفرق بين mysqli_real_eacape_string و addslashes

محمد الحربي • منذ 5 سنوات

السلام عليكم .. 

 

هناك دالتين تستخدم كثيراً للحماية في php وهي 

addslashes و mysqli_real_escape_string

كلهما يضع سلاش خلفي امام كل علامة تنصيص 

هل هناك فروق بينهم ؟ ام انهم نفس الوظيفة تماماً ؟!

كلمات دليلية: php

ساعد بالإجابة

"إن في قضاء حوائج الناس لذة لا يَعرفها إلا من جربها، فافعل الخير مهما استصغرته فإنك لا تدري أي حسنة تدخلك الجنة."

الإجابات (3)

محمد الحربي • منذ 5 سنوات

UP

محمد الحربي • منذ 5 سنوات

اتمنى الاجابة بأسرع وقت

 

عمار الخوالدة • منذ 5 سنوات
مميز

وعليكم السلام

 

نعم بالطبع توجد فروق،، كمبرمج عليك دائما أن ترجع إلى التوثيق الرسمي لأي دالة،
فغالبا ستجد اجابة معظم استفساراتك هناك وإن لم تكن بالتفصيل، لكن ستعطيك فكرة عن الاقل عما يجب عليك فعله،

بالرجوع إلى التوثيق الرسمي لدالة addslashes ستجد هذه العبارة في وصف الدالة:

 

ميثود addslashes() تُستخدم أحيانا بشكل خاطئ لمحاولة منع SQL Injection، بدلا من استخدام دوال تستخدم بشكل مخصص لعمل escaping ( تجاوز الحروف الغير مرغوب بها ) او استخدام الـ Prepared Statements.

وبالفعل، ببحث قصير في جوجل ستجد مئات الطرق التي تستخدم لتجاوز الـ Escaping الذي تقوم به هذه الدالة، لم أجرب أيا منها لكن بحسب ما فهمت، أنها تقوم بعمل escaping لرموز او حروف معينة قد تكون أكثر أو أقل من الحروف التي تقوم الدوال المختصة بالـ Escape لقاعدة البيانات بعملها، كذلك قد يمكن تجاوزها باستخدام بعض ترميزات قاعدة البيانات، التي تسمح باستخدام الحروف أو الرموز التي تتكون من أكثر من بايت واحد، فيتم دمج أكثر من حرف مع السلاش الخلفي بحيث ينتج حرفا جديدة.
بينما الدوال المخصصة للتعامل مع mysql قد يتغير نشاطها أو طريقة عملها بحسب إعدادات Mysql على السيرفر، هذه مقالة مفصلة لأحد الخبراء الأمنيين تشرح بالأمثلة وبالتفصيل كيفية تجاوز هذه الدالة:
http://shiflett.org/blog/2006/addslashes-versus-mysql-real-escape-string

ولتفاصيل أكثر يمكنك البحث في جوجل عن addslashes bypass

 

لذلك حاول دائما استخدام الأدوات بشكل مترابط،، فان استخدمت mysqli فاستخدم الدوال التي تزودك بها mysqli، كذلك ان استخدمت PDO فعليك باستخدام Prepared Statements التي تزودك بها PDO، فأنت لا تدري ما يحصل بالضبط خلف الكواليس وقد تعرض موقعك لثغرات أمنية في حال أسأت استخدام دالة معينة في موقعك.

محمد الحربي: لك جزيل الشكر

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !