مرحبا ,,
كنت اقرأ عن النواحي الأمنية في ASP.net مع اجراء بعض التجارب على ذلك ,, واحببت ان انقلها لكم ...
مقدمة :
تنقسم آليات التأمين في تطبيقات الويب المعتمد على IIS وASP.net الى قسمين :
آليات تأمين IIS و آليات تأمين ASP.net وسنتكلم عن كلا التطبيقين ...
آليات تأمين IIS :
يقدم IIS 5 دعما داخليا لتوثيق الاجهزة التابعة وهناك أربعة انواع من آليات التأمين باستخدام IIS Server
1- Anonymous authentication
وهي الالية الافتراضية التي يستخدمها IIS وتسمح للمستخدم باستعراض تطبيقات الويب بدون ادخال يوزر نيم وباسوورد .. او يستخدم باسوور غالبا ما تكون افتراضية ..
2- Basic authentication
هذا النوع من التأمين يتطلب ادخال يوزر نيم وباسوورد لكي يتم الدخول الى التبيق ولكن الباسوورد هنا يتم ارسالها بصورتها النصية واي بدون اي تشفير وهذا يجعلها سهلة الاختراق نوعا ما ..
3- Intergrated windows authentication
هذا النوع من التأمين يتطلب ان يكون لدى المستخدم حق الدخول مع نطاق windows 2000 .. ويفضل استخدامه في تطبيقات الويب Business-to-business (b2b) حيث يكون في هذه الحالة عدد المستخدمين الذين يستعملون التطبيق قليل نسبيا ...
4- Digest authentication
هذه الآلية تشبه تماما Basic authentication الا انها اكثر امنا كونا ترسل كلمة المرور بصورة مشفرة ..
يمكن بالاضافة الى ذلك استخدام Directory Security للحد من الوصول الى مصادر الويب المتاحة كما تحددها كأدمن ..
....................................................
ملاحظة : تكلمت عن هذا بشكل مفصل في مقال بعنوان ( ماذا يقدم ويندوز XP من النواحي الامنية ) واظنه موجودا بمنتدى أمن الشبكات ...
....................................................
آليات التأمين المتاحة في ASP.net
تقدم ASP.net ثلاث آليات توثيق وهي :
توثيق Forms ,,, وتوثيق Passport ,,, وتوثيق windows
آلية توثيق Forms :
ترتكز هذه الآلية على نموذج تسجيل واحد يمكن الوصول اليه في اي وقت يحتاج المستخدم فيه لتسجيل دخوله ولكن عندما يتطلب الامر استخدام الخصوصية اكثر كأن تريد شراء شيء من تطبيق فسوف يتم توجيهك الى نموذج ليتم تسجيل دخولك عليه وبعد ان يتم تسجيل الدخول بنجاح سيعاد توجيهك الى النموذج الذي كنت تزوره في المرة الاولى ..
ويطلق على هذا النوع من التوثيق بـ Forms authentication .
آلية توثيق Passport :
وهي الخدمة التي تقدمها Microsoft لمواقع الويب الخاصة بها مثل MSN و Hotmail ويمكن الشتراك بها بعد توقيع عقد مع الشركة نفسها وأستخدام هذا التوثيق يتم بالصورة التالية :
1- عندما يطلب المستخدم تطبيقا يتطلب منه التوثيق ,, يعاد توجيهه الى خدمة تسجيل دخول Passport .. كما يتم ادخال تفاصيل التطبيق الذي يطلبه المستخدم الى هذه الخدمة اتوماتيكيا ..
2- بعد ان يتم تسجيل الدخول بنجاج تعيد هذه الآلية المستخدم الى التطبيق الاصلي الذي طلبه والى هنا تعتبر الخطوات مشابهه لآلية توثيق Forms ولكن تختلف عنها ان هذه الخدمة تقوم بتمرير جواز توثيق مشفر للمستخدم لتطبيق ASP.net ...
ولاستخدام هذه الخدمة يجب ان تقوم بإنزال احد برامج Passport SDK
آلية توثيق Windows
وهي آلية التوثيق التي يتم فيها توثيق المستخدمين بناء على حقوق دخولهم في نظاق Windows 2000 ( login (
تطبيقات بسيطة على كل من توثيق Forms و Windows :
1- اعداد آلية توثيق Forms :
يتم هذا عن طريق تغيير اعدادات ملف Web.config ...حيث يتم انشاء هذا الملف لتخزين معلومات الاعداد الخاصة بتطبيق الويب تلقائيا باستخدم VS.net ولكن اذا كنت تريد استخدام صلاحيات نختلفة للأدلة الفرعية فهذا يتطلب انشاء عدة ملفات Web.config للأدلة الفرعية .. وعادة يكون بلغة XML
وبستخدم عادة عنصرا authentication و authorization المتعلقان بملف web.config للتوثيق ..فعندما تنشئ تطبيق ASP.net فإن الكود الموجود في هذه العناصر في ملف Web.config هو :
هذا هو الاعداد الافتراضي للملف ولكي نضبط نمط التوثيق لملف Web.Config على Forms قم باستبدال Windows هنا :
ليصبح :
وعند الانتهاء من توثيق المستخدم ..يصدر تطبيق الويب ملف بيانات للمستخدم الموثق وهنا يجب تضمين لاحقة ملف البيانات واسم نموذج التوثيق في عنصر Forms في ملف Web.config ويتم تعريف عنصر Forms كما يلي :
هنا استخدمنا لاحقة ASPXFORMSAUTH لملف البيانات ...
- يمكنك ايضا رفض الاستخدام غير الموثق لنماذج الويب بتغيير الجزء الخاص بالتوثيق في الكود كما يلي :
ملاحظة : هناك نوعين من المستخدمين في ASP.net وهما :
( * ) ويمثل جميع المستخدمين مثل الاحرف البديلة *.* في أنواع الملفات .
( ؟ ) وهذا يمثل المستخدمين المجهولين او الذين لم يتم تسجيل دخولهم .
اعداد آلية توثيق Windows
يجب علينا اولا ان نغير نمط التوثيق الى windows كما في الكود التالي :
طبعا يكون نمط windows في ملف web.config افتراضيا ولكن هنا اعتبرنا انك قمت بالتجربة الأولى وغيرته الى Forms
الآن لكي تسمح لمستخدمين محددين بالوصول عن طريق نطاقهم واسمائهم الخاصة بهم في قائمة allow users الخاصة بعنصر authorization قم بكتابة الكود التالي :
هنا فقط سيتمكن المستخدمين المسجلين باسم mohamed واسم kattan من استخدام تطبيق الويب ..
باقي كود منع المستخدمين الآخرين من الدخول وهو مشابه تماما للذي وضعناه في توثيق Forms وهو :
..................................
الأن يمكنك عمل تطبيق ملف Login.aspx .. قم بفتح بعمل web Form واسخدم فيه الكود التالي :
Private Sub ButtonSubmit_Click (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonSubmit.Click
If ( (UserName.Text = "mohamed") And (Password.Text = "kattan") ) Then
FormsAuthentication.RedirectFromLoginPage
Else
Message.Text = "Invalid User Name or Password. Please try again"
End If
End Subالكود هذا يطلب من المستخدم ادخال الاسم والباسوورد واذا كان الامر كذلك يتم اصدار تصريح توثيق للمستخدم ثم يعاد توجيهه للنموذج الأصلي المطلوب ..
..........................................
هذه بعض التجارب التي اجريتها للتحقق من بعض النواحي الامنية في ASP.net مع IIS ومازلت اقرأ اكثر للتعمق بالموضوع وسأكتب عن غيرها عندما اجد الوقت لذلك ..
لكم تحياتي ,,,