السلام عليكم .. كلنا نعرف ان المواقع الإلكترونية معرضة دائما للاختراق والوصول الى بيانات من المفترض ان لا يراها الا المسموح لهم.
ياريت شرح ابرز مناطق الخطر في السكربتات وكيف اقوم بحمايتها كمطور؟ الف شكر :)
القاعدة الاساسية لحماية موقعك عليك ان تكون تملك تفكير امني (ما اقصده بتفكير امني اي لديك نفس طريقة التفكير التي يتمتع بها خبراء الاختراق )
مع كتابتك لكل سطر برمجي عليك ان تكون متفهم لما تكتب وهل ما تكتبه يمكن استغلاله وماهي الطرق التي يتم استغلاله بها وتقوم بمنعها
ابرز مناطق الخطر في السكربتات
1- المدخلات المتنوعه للبحث او لتسجيل الدخول او غيرها
2- عرض البيانات (العرض له اهميه كبيره مثل الادخال يجب ان تعرض البيانات بحيث اذا كان بها كود لايتفاعل مع المتصفح مثل اكواد html & js وطبعا هنا ايضا دور مهم للمدخلات )
3- لاتعتمد على لغة جافا سكربت في فلترة المدخلات فهي غير كافية ويمكن ابطال مفعولها من المتصفح وتجاوزها
4- رفع الملفات واحده من اكثر الاسباب خطوره في اختراق الموقع وحمايتها لا تعتمد على طريقة واحده وانما على عدة طرق وعلى حسب الاحتياجات وكل مبرمج وابداعه في الحماية
5- الكوكيز بعض المبرمجين يقوم بأستخدامها دون عمل اي تشفير لها او حماية ويظن انه لا احد ينتبه لها وهذا امر خطير ان تتركها بدون تشفير او حماية
6- لاتسمح بظهور الاخطاء بعض المبرمجين يسمحون بظهور اخطاء البرمجة على الموقع في حالة حدوثها وهذا امر خطير وعليك ايقاف اظهار الاخطاء والاكتفاء بملف error_log لدراسة الاخطاء
7- حدد كمية معينه من البيانات التي تستقبلها في حالة كان سيرفرك مفتوح ولايقدم لك حماية
هناك انواع من الهجمات تستهدف المدخلات التي لاتحدد اكبر كمية من البيانات
في لغات البرمجة تاتي الاعدادات افتراضية لتمنع مثل هكذا هجمات لكن عليك في البرمجة ان تحدد كل مدخل وكم يسمح من حروف او ارقام او بيانات ولايستقبل اكثر من هذا الحد
8- اهتم بحماية السيرفر حيث حماية السيرفر تشكل نسبة كبيرة من حماية موقعك
9- البيانات المهمة مثل الباسوردات لاتقم بوضعها بدون تشفير واستخدم خوارزميات من نوع One-Way مثل MD5 & SHA1
10- لاتستخدم اضافات او دوال او كلاسات برمجية دون ان تتحقق من سلامتها اول باول
11- اطلع دائما على الاخبار وجديد الحماية والاختراق لكي تكون لديك دراية باخر مستجدات هذا العالم
12- دائما راقب سلوك موقعك او السكربت واقرء ملفاته لكي تعلم كيف يتعامل ويتجاوب مع الزوار ومحاولات الاختراق واكتشف نقاط الضعف وقم بحمايتها
في النهاية هذه النقاط ليست كثيرة والامر يعتمد على خبرة المبرمج وابتكاراته في الحماية
عن نفسي انا في بعض البرمجيات لا اقوم بفلترة المدخلات نهائيا بل اقوم بتشفيرها وحفظها وقوم بفك التشفير واتعامل معها عند العرض والمعالجة لكن لهذه الميزة سلبيات وايجابيات ولاتنفعك دائما لكن ذكرتها من باب الاضافة
صلاحيات السكربت على قاعدة البيانات يجب أن لاتكون مفتوحة وكاملة، ويجب أن يوجد أكثر من حساب تستخدمه للتواصل مع قاعدة البيانات ، مثلاً صفحة البحث في موقع يجب أن تستخدم صلاحيات القراءة وتنفيذ ( Select) فقط، هكذا قد تستطيع الحد تعرض قاعدة البيانات للتعديل مثلاً.
بالطبع هذا الأمر لايحميك من الهجوم لأنه بالإمكان تنفيذ هجمة سرقة بيانات على قاعدة البيانات لذلك عليك عمل طرق فلترة للإستعلامات التي تنفذ عن طريق الموقع والنصوص التي ترسل عن طرق مربعات النصوص.
كلمات السر بقاعدة البيانات احفظها بشكل مشفر , أستعمل md5 او sha1 معي salt
salt = مجموعة من الحروف والارقام والرموز العشوائية
لاتثق أبداً في مدخلات المستخدم , بمعني تحقق دائماً من المدخلات سواء كانت post او get
في لوحة التحكم ضع كود لا تنفذ الاوامر إلا بوجودة للحماية من ال CSRF
في حالة رفع ملفات على السيرفر , تأكد من نوعية الملفات المرفوعة , تاكد من ان لايعرف المستخدم مسار الملف واستخدم تقنية force download لتحميل الملف
بالتوفيق
ممكن تبدا بالتعلم من المحتوى الاجنبي
لكن تاكد انه التجارب بتعلمك الكثير عن
حماية الكود ..
ممكن تبدا من دليل الـ PHP في الحماية
أهلاَ وسهلاَ
هناك العديد من الثغرات اللتي تواجه المواقع في بدايتها
مثل ثغره XSS
والحل حقها دالة في PHP لإزالة سماح كتابة الأكواد
طبعاَ لام تقرأ كثير عنها
ثاني ثغره حقن قواعد البيانات بـعلامة ' هذي الشخطة الصغيره تتسبب في دمار هائل إقرا عنها وإن شاء الله تحمي نفسك وقواعد بياناتك
ثالث ثغره فلنفرض تمت سرقة قواعد بيانات الموقع سيتم كشفها بسهولة .. لكن لازم تشفر أي تشفير .. وأنصحك بتشفيرات قوية جداَ لاكن المتعارف
عليه بلغة بي إتش بي تشفير MD5 و SHA1
هذا ما أتذكره وأتمنى منك تقرا كثييييير عن هذي الثغرات قبل ماتتعلم الحماية منها
لك كل الود ياصديقي
التعليقات