كيفية تأمين الأساسية مصادقة النماذج في asp.net?

StackOverflow https://stackoverflow.com/questions/133106

  •  02-07-2019
  •  | 
  •  

سؤال

تخيل أن لديك موقع بسيط مع فقط 2 الصفحات:تسجيل الدخول.aspx السري.aspx.موقع الويب الخاص بك هو المضمون باستخدام أي شيء ولكن ASP.net مصادقة النماذج ، ASP.net تسجيل الدخول ملقم التحكم في الدخول.aspx.التفاصيل هي على النحو التالي:

  • الموقع تم تكوينه لاستخدام SqlMembershipProvider
  • الموقع تنفي جميع المستخدمين المجهولين
  • تم تعطيل ملفات تعريف الارتباط

فإن من الواضح أن العديد من الأشياء في الاعتبار فيما يتعلق بالأمن ولكن أنا أكثر اهتماما في صفر رمز للخروج من مربع التجربة التي تأتي مع .net framework.

إذا كان من أجل هذا السؤال ، فقط نقاط الهجوم هي اسم المستخدم/كلمة المرور مربعات النص في تسجيل الدخول.aspx أن القراصنة حقن التعليمات البرمجية التي تسمح لهم للوصول إلى سر.صفحة aspx?

كيف الآمن هو صفر رمز للخروج من مربع التجربة التي توفر Microsoft?

هل كانت مفيدة؟

المحلول

لا يزال لديك بعض المتغيرات التي لا تمثل:

  • الأمن في مخزن البيانات المستخدمة من قبل عضويتك مقدم (في هذه الحالة ، قاعدة بيانات Sql Server).
  • أمن المواقع الأخرى المستضافة في نفس IIS
  • عامة شبكة الأمن من آلات تشارك في استضافة الموقع أو على نفس الشبكة حيث استضافتها الموقع
  • الأمن المادي آلات استضافة الموقع
  • هل تستخدم التدابير المناسبة لتشفير مصادقة المرور ؟ (HTTPS/SSL)

ليس كل من تلك القضايا هي محددة MS, لكنهم الجدير بالذكر لأن أي منهم يمكن بسهولة تفوق العدد الذي تسأل عنه ، إذا لم تتخذ الرعاية من.ولكن الغرض من سؤالك سأفترض لم تكن هناك أي مشاكل معهم.

في هذه الحالة أنا متأكد مصادقة النماذج لا ما يفترض القيام به.أنا لا أعتقد أن هناك أي النشطة حاليا استغلال هناك.

نصائح أخرى

بقدر ما أعرف سيتم إرسال كلمة المرور كما نص عادي (لكن المشفرة).وبالتالي فإن الشيء الأكثر أهمية القيام به هو استخدام بروتوكول HTTPS على شاشات تسجيل الدخول.

وضع أخرى ويبدو أن تكون آمنة بالنسبة لي.

مع HTTP المصادقة الأساسية ، وهو ما .صافي الأساسية مصادقة النماذج باستخدام, من أجل عرض السري.صفحة aspx المتصفح يجب إرسال Base64 في ترميز سلسلة من اسم المستخدم وكلمة المرور.

إلا إذا كنت تستخدم SSL, أي شخص لديه حق الوصول إلى مسح الشبكة بين ملقم مستعرض يمكن قراءة هذه المعلومات.أنها يمكن فك اسم المستخدم وكلمة المرور.يمكن تكرار اسم المستخدم وكلمة المرور في المستقبل للوصول إلى سر.صفحة aspx.

أن قال, إلا إذا كنت تستخدم SSL شخص يمكن أيضا مسح كل دورة من شخص آخر باستخدام السري.aspx ذلك في الواقع ، سيكون لديهم إمكانية الوصول إلى محتوى الصفحة.

حسنا, حاولي نظرة وراء الكواليس:

حماية كلمة المرور

التطبيقات التي تقوم بتخزين أسماء المستخدمين ، وكلمات السر وغيرها من المصادقة المعلومات في قاعدة البيانات ينبغي أبدا تخزين كلمات المرور في نص عادي, خشية قاعدة بيانات تكون مسروقة أو المساس بها.إلى تلك الغاية ، SqlMembershipProvider يدعم ثلاث صيغ التخزين ("ترميزات") للحصول على كلمات السر ، كلمة المرور إجابات.الموفر PasswordFormat الملكية ، وهو تهيئة من passwordFormat تكوين السمة ، يحدد التي تستخدم الصيغة:

  • MembershipPasswordFormat.من الواضح, الذي يخزن كلمات السر وكلمة المرور الإجابات في نص عادي.
  • MembershipPasswordFormat.تجزئته (الافتراضي) ، الذي يخزن المملح تجزئات ولدت من كلمات السر ، كلمة المرور إجابات.الملح هو عشوائي 128-بت القيمة التي تم إنشاؤها من قبل .صافي الإطار RNGCryptoServiceProvider فئة.كل كلمة/كلمة المرور الإجابة الزوج المملح مع هذا قيمة فريدة من نوعها ، و الملح يتم تخزينها في aspnet_Membership الجدول PasswordSalt الحقل.نتيجة تجزئة كلمة المرور و الملح يتم تخزينها في حقل كلمة المرور.وبالمثل ، فإن النتيجة من تجزئة كلمة المرور والرد الملح يتم تخزينها في PasswordAnswer الحقل.
  • MembershipPasswordFormat.مشفرة ، الذي يخزن كلمات السر المشفرة ، كلمة المرور إجابات.SqlMembershipProvider بتشفير كلمات المرور باستخدام إجابات متماثل التشفير/فك التشفير الرئيسية المحددة في التكوين القسم decryptionKey سمة التشفير الخوارزمية المحددة في التكوين القسم فك السمة.SqlMembershipProvider يلقي الاستثناء إذا كان طلب تشفير كلمات المرور والأجوبة ، و إذا decryptionKey هو Autogenerate.هذا يمنع عضوية في قاعدة البيانات التي تحتوي على كلمات السر المشفرة ، كلمة المرور إجابات من أن تصبح غير صالحة إذا انتقلت إلى ملقم آخر أو آخر التطبيق.

وبالتالي فإن قوة من الأمن الخاص (خارج الصندوق) سوف تعتمد على حماية كلمة السر تنسيق استراتيجية تستخدمه:

  • إذا كنت تستخدم نص واضح ، فمن الواضح أنه من الأسهل اختراق النظام الخاص بك.
  • باستخدام تشفير من ناحية أخرى ، الأمن سيعتمد على الوصول الفعلي إلى الجهاز الخاص بك (أو على الأقل آلة.التكوين).
  • استخدام كلمات المرور المجزأة (الافتراضي) سوف يضمن الأمن اعتمادا على:أ) المعروف انتكاسات من تجزئة استراتيجية RNGCryptoServiceProvider فئة ب) الوصول إلى قاعدة البيانات لتقديم تنازلات عشوائيا الملح.

أنا لا أعرف إذا كان من الممكن استخدام نوع من قوس قزح الجدول تقتحم الافتراضي تجزئة قاعدة النظام.

لمزيد من التفاصيل, راجع هذا الرابط:http://msdn.microsoft.com/en-us/library/aa478949.aspx

إذا تم تكوينها بشكل صحيح من خلال عضوية مقدم ، سيكون لديك القدر الكافي من الأمن.أن الوصول إلى تلك الصفحة قد يكون الوصول إليها من خلال cannonical الهجمات ، ولكن هذا له علاقة مع جهاز الأمن العام.انا عرضا باستخدام الأمن تطبيق المشاريع كتل.قد تحتاج إلى قراءة هذه وننظر إلى أنه عند تنفيذ الأمن على موقع الويب الخاص بك ، فقط يكون على بينة من التهديدات الأمنية المشتركة.لا الموقع سوف يكون من أي وقت مضى 100% غير قابل للقرصنة ، بالنظر إلى أن كنت على شبكة مشترك و ما سيكون موصول خادم مؤمن في مكان آمن تحت حراسة 24/7 من قبل الجيش (حول وزارة الدفاع "" مستوى الأمن على أساس من الكتاب البرتقالي).ولكن من خارج منطقة الجزاء وظائف الأعضاء مقدمي (عندما يتم تكوين بشكل صحيح) توفر كمية جيدة من الأمن.

تحرير:نعم أنا أتفق مع التعليقات الأخرى التي تم إجراؤها ، HTTPS على الأقل سجل في شاشات معين, إذا كنت ترغب في حماية اسم المستخدم وكلمة السر من حزمة المتشممون ومراقبة الشبكة.

Asp.Net يدعم بدون ملفات تعريف ارتباط دورات ، هذا بلوق وظيفة يظهر.بدلا من ارتباط الدورة ، ويستخدم معرف في عنوان url لتتبع المستخدمين.

أنا غير متأكد من كيفية تأمين هذا ، ولكن أود أن أعتقد أنها آمنة مثل صعوبة إلى القوة الغاشمة هوية السلسلة.

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

ملفات تعريف الارتباط على URL ليست آمنة بما فيه الكفاية, هناك الكثير من المشاكل المختلفة مع ذلك (لا سيما المرجع التسرب إذا كان لديك أي) و استخدام HTTPS.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top