إستراتيجيات لحماية البرامج و المواقع من الإختراق

كمبرمجين تكمن مهمتنا في برمجة الأنظمة الحاسوبية لتعمل بالطريقة المطلوبة، وقليلاً ما نحسب حساب أن يتم التلاعب بطريقة عمل هذه الأنظمة كوننا لا نتوقع أن يكون المستخدم ضليع في البرمجة أو حتى أنه يريد تخريب النظام، إستغلاله أو سرقة البيانات منه، وكون إختراق الأجهزة بغير إذن أصحابها هو محرم في الدين يعطي المبرمجين في العالم العربي نوعاً من الأمان مما يسهل على المخترقين إختراق الأنظمة و الأسوء أن يكون ذلك دون علم المسؤول عن النظام، لذلك سنناقش في هذا المقال بعض الإستراتيجيات لحماية النظام المبرمَج والتي يمكن تطبيقها في مختلف مجالات البرمجة مثل برامج سطح المكتب، المواقع و التطبيقات.


توقع أن يدخل المخترق من الباب

دائماً ما نظن أن المخترق سيحاول الدخول من أماكن غير متوقعة و ننسى أنه قد يحاول الدخول من الباب المتاح للجميع، و الخطر في هذه الحالة أن تكون دفاعاتنا أضعف ما يمكن عند هذا الباب، فمثلاً تعتمد الأنظمة غالباً على كلمات السر للتعرف على المستخدمين، و تكمن قوة هذه الحماية في كثرة كلمات السر المحتملة و المعقدة (تحتوي على أحرف, رموز و أعداد) التي يصعب على المخترق أن يحزرها و لكن في الواقع يوجد الكثير من الطرق للحصول عليها مثل التصيد (Phishing) أو إعتراض إتصال المستخدم مع الخادم (Man in the middle) أو حتى باستخدام هجوم القوة العمياء (Brute Force).

و نود الإشارة إلى أنه يوجد عدة إستراتيجيات مضادة لإيقاف هذه الهجمات التي تحاول استهداف أهم مستخدم للنظام و هو المدير مثل المصادقة الثنائية (Two factor authentication) التي تتطلب أن يقدم المستخدم دليلين على الأقل لإثبات هويته أولها أن يسجّل دخوله بشكل صحيح و يليها أن يدخل الكود الذي وصله كرسالة نصية عبر هاتفه أو كرسالة على بريده الإكتروني.

إذاً يجب الاهتمام بحماية المدخل المتاح للجميع لأنه قد يكون أسهل سبل المخترق للوصول و التحكم بالنظام.


لا تكشف معلوماتك

أول ما يقوم به المخترق هو جمع البيانات عن الهدف لتحديد نقاط الضعف ومحاولة مهاجمتها، و كلما قللت المعلومات التي تعطيها للمخترق كانت مهمته أصعب، فمثلاً تقوم بعض خوادم HTTP بإرسال بيانات عن الخادم و بيئة العمل المستخدمة لبناء الموقع في الهيدر (Header) الخاصة ببروتوكول HTTP، و هذا يمكّن المخترق من البحث عن الثغرات التي تستهدف ذلك الإصدار من الخادم أو بيئة العمل، و هذا مثال حي على ما يعيده أحد المواقع:

Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET

يجب في هذه الحالة محاولة إخفاء أكبر قدر ممكن من البيانات غير الضرورية التي قد تشرح طريقة عمل النظام, فهي قد تساعد المخترق في عملية إختراقه. يمكن تطبيق هذا المبدأ على الكثير من الأمور البرمجية التي لا يتسع المقال لذكرها، لكن فقط فكر كمخترق و تذكر دائماً أن الهدف الذي لا تعرفه لا يمكنك إصابته.


المخترق يعرف أكثر مما تظن

أحياناً تجد المبرمج على عجلة من أمره فيقوم ببناء المشروع بدون سد كل الثغرات التي يمكن أن يستغلها المخترق عمداً منه لأن ذلك يتطلب منه المزيد من العمل و ظناً منه أن المخترق لن يعرف بوجودها.

تجاهل أمر الحماية على أمل أن يكون المخترق جاهلاً هو أمر غير صائب فهذا الشخص يملك أساليب مختلفة في التضليل و الخداع للحصول على البيانات التي تساعده في الوصول إلى هدفه، فمثلاً قد تكون هناك صلاحيات أو خدمات سرية متاحة فقط لمطور و إدارة الموقع, فيتغافل مطور الموقع عن حمايتها, كونها سرية يُفترض عدم التمكن من استغلاها إلا إن قام صاحبها بالإفصاح عنها. هذا الإهمال المتعمد قد يمكّن الهاكر من الوصول لهذه البيانات السرية و بالتالي هذا يسهل إحتمالية تسلله للنظام بشكل أسرع.

تندرج تحت هذه الاستراتيجية في الإختراق ضمن ما يعرف بالهندسة الاجتماعية (Social Engineering) و التصيد (Phishing) التي تهاجم النقطة الأضعف في حماية الأنظمة و هي البشر، و يفيد في هذه الحالة الأخذ بالحسبان أن المخترق قد يستطيع الوصول لتلك المعلومات و محاولة وضع المزيد من الصلاحيات و الحماية لمنع الوصول غير المخول لها.


توقع كل شيء

عندما تتوقع كل شيء ببساطة لا يمكن لأي شيء أن يفاجئك، فغالباً ما نفترض أن المستخدم سيستخدم النظام بالشكل الصحيح و هذا لا يحدث في حالة المخترق.

كمثال على ذلك، المواقع التي يكون لديها تطبيقات للهاتف كموقع فيسبوك مثلاً (لديه تطبيق), تقوم ببناء API لكي تستخدمه تطبيقاتها للوصول للمعلومات التي يعرضونها في الموقع أيضاً. هنا غالباً لا يتوقع المبرمجون أن أحداً سوف يقوم بتحليل البيانات التي يرجعها الـAPI للتطبيق فيقومون بتوفير بيانات حساسة لا يجب توفيرها أو قد لا يتوقعون ببساطة مثلاً أن يتم طلب توصيل المشتريات قبل أن يتم شراءها.

لذلك دائماً فكر في جميع الاحتمالات الممكنة التي قد تتسبب بتعطيل مشروعك، إستغلاله أو تسريب البيانات منه.

تقع أغلب الثغرات المعروفة مثل XSS و SQL Injection بسبب عدم تطبيق المبرمجين لهذه الاستراتيجية و لكن لا يجب حصر هذه الإستراتيجية بتلك الثغرات كما يحدث غالباً بل يجب تعميمها على طريقة عمل البرنامج بشكل عام، إذ كثيراً ما يقوم المبرمجون بحماية المواقع ضد تلك الثغرات المعروفة و لا يسدون ثغرات أبسط من تلك بكثير.


حدث مكتباتك

تستخدم في أغلب المواقع والبرامج مكتبات شائعة تسهل على المبرمجين عملهم، و غالباً ما يتم البحث عن الثغرات في هذه المكتبات و عند اكتشافها يتم نشر هذه الثغرات و محاولة سدها في الإصدارات الجديدة، فمثلاً في المواقع المصممة بنظام ووردبريس (WordPress) تشكّل الثغرات الموجودة في الإضافات (Plugins) أغلب أسباب الاختراق، لذلك يجب عليك متابعة تحديث المكتبات و أطر العمل بل و حتى الخوادم التي تستخدمها لتفادي هذه الثغرات.


راقب بهدوء

لا تظن أن أمان النظام يكمن في سد الثغرات ثم الذهاب و الاستلقاء على السرير فدائماً ما يكون النظام معرضاً لخطر ثغرات لم تُكتشف بعد إذ لا يوجد نظام محمي 100%، لذلك قم بشكل دوري بتفقد عمل النظام و السجلات (Logs) (هي سجلات يُسجل بها كل حركة أو نشاط حدث على النظام و توقيته) فإبلاغ النظام عن حدوث أخطاء (Exceptions) أثناء تشغيله أو وصول الكثير من الطلبات للموقع من نفس العنوان (IP Address) في وقت قصير قد ينذر بمحاولة الهجوم عليه، و يمكنك حينها اتخاذ التدابير المناسبة لإيقاف الهجوم.



آخر تحديث: 26-12-2021

الكاتب

رامي عبدالله

طالب جامعي سوري تخصص صيدلة. مهتم كثيراً بالتقنية و أدرس البرمجة ذاتياً كهواية و أحب مشاركة كل ما أتعلمه معكم لنشر هذا العلم الرائع في وطننا العربي و لتسهيل الطريق على المتعلمين الجدد.

تعليقات 2

أضف تعليق

يجب تسجيل الدخول حتى تتمكن من إضافة تعليق أو رد.

تقييم المقال

لم تقم بتقييم المقال بعد!

الدورات

أدوات مساعدة

أقسام الموقع

دورات
مقالات كتب مشاريع أسئلة