الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

استخدام التوثيق والتطبيقات الأمنية في ASP.net ..

مغلق
بدأه محمد قطان في 11 نوفمبر 2002 · 6 رد · 2,100 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مرحبا ,,

كنت اقرأ عن النواحي الأمنية في 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 ومازلت اقرأ اكثر للتعمق بالموضوع وسأكتب عن غيرها عندما اجد الوقت لذلك ..

لكم تحياتي ,,,

واثق الخطوة يمشي ملكا !!

#2

بصراحة احترت وين حط الموضوع هنا ام في الأمن ولكن هنا يبدو أقرب ...

سوف اتكلم بموضوع آخر عن أمن PHP على انظمة Unix ( هذه لدي خبرة بها أكثر ) على مبدأ المقارنة بين كلا اللغتين والنظامين ...

ان شاء الله اجد وقت بس .. :)

سلام

واثق الخطوة يمشي ملكا !!

#3

شي حلو والله .. بارك الله فيك :) .. أنا أعتقد أن التطبيقات الأمنية المتاجة في ASP.NET هي أكثر من PHP أو أي من اللغات السابقة لأن ال ASP.NET جديدة وتحتوي على العديد من التقنيات ..

Coding on the Cloud and for the Cloud!

My Blog

#4

مممممم

طيب انتظر مني المقارنة ... ;)

أكيد رح نتناقش أكتر بعد الموضوع التاني :)

سلام ..

واثق الخطوة يمشي ملكا !!

#5

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

ان اللغة الفلانية تمنحنا أمانا و هكذا .. نتمنى أن تثرينا بالمزيد من علمك ..

مع تحياتي ..:rolleyes:

You can fly while you can touch the sky

#6

ولكن لدي تعقيب على ماذكرته فقد ذكرت التالي :

ولكن اذا كنت تريد استخدام صلاحيات نختلفة للأدلة الفرعية فهذا يتطلب انشاء عدة ملفات Web.config للأدلة الفرعية

ولكن مررت على هذة التجربة من قبل وكنت محتاجها فعلا لإستخدامها بشكل فعلي وليس للتجربة وقد بحثت كثيرا في الإنترنت وفي الملفات المساعدة التي تاتي مع .NET Framework ورأيت أن أحسن حل بل يمكن الحل الوحيد هو وضع ملف إعدادت web.config واحد فقط لكامل المشروع وبداخله تستطيع تحديد المجلدات التي تريد حمايتها ومستوى الحماية

وهذا ملف web.config للمشروع الذي عملته وهو يحتوي على حماية لمجلدين داخليين هما admin و admin2 وهذا كود الملف كامل للفائدة

<?xml version="1.0" encoding="windows-1256" ?>

وأنا كنت سوف أكتب مقال عن هذا الموضوع ولكني مشغول جدا هذة الأيام وسوف أحاول أن أكتب جميع ما أعرفه عن هذا الموضوع في مقال قريبا إن شاء الله

#7

شكرا لك أخي المميز على الرد الجميل والايجابي .. :)

وبانتظار مقالاتك ..

اعتذر لك لأنني حررت مشاركتك لتعديل الكود ليظهر بشكل أفضل ...

استخدم code2 في المرة القادمة ...

شكرا لك ..

واثق الخطوة يمشي ملكا !!

هذا الموضوع مغلق.

مواضيع مشابهة