security - الدليل النهائي لمصادقة موقع الويب المستندة إلى النموذج




http authentication language-agnostic article (11)

أود أن أضيف تعليقًا هامًا للغاية:

  • "في وضع الشركات ، داخل الشبكة ،" قد لا ينطبق معظم ، إن لم يكن كل ما سبق ،!

تقوم العديد من الشركات بنشر مواقع الويب "للاستخدام الداخلي فقط" والتي هي "تطبيقات الشركات" التي تم تنفيذها من خلال عناوين URL بشكل فعال. يمكن فقط تحليل عناوين URL هذه (من المفترض ...) فقط داخل "الشبكة الداخلية للشركة". (ما هي الشبكة التي تتضمن جميع محاربي الطرق الموصولين بـ VPN بشكل سحري).

عندما يكون أحد المستخدمين متصلاً بشكل متصل بالشبكة المذكورة ، فإن هويتهم ("المصادقة") هي [بالفعل ...] "معروفة بشكل قاطع" ، كما هو إذنهم ("إذن") للقيام بأشياء معينة ... مثل. .. "للوصول إلى هذا الموقع."

يمكن توفير خدمة "المصادقة + التخويل" هذه من خلال العديد من التقنيات المختلفة ، مثل LDAP (Microsoft OpenDirectory) أو Kerberos.

من وجهة نظرك ، فأنت تعرف هذا ببساطة: أن أي شخص يتقن بشكل مشروع في موقع الويب الخاص بك يجب أن يكون مصحوبًا بـ [متغير بيئة يحتوي على سحريًا ...] "رمز مميز". ( أي يجب أن يكون غياب مثل هذا الرمز سبباً فورياً 404 Not Found.)

قيمة الرمز غير منطقية بالنسبة لك ، ولكن ، إذا دعت الحاجة ، "توجد الوسائل المناسبة" التي يمكن لموقع الويب الخاص بك من خلالها "[بشكل مخادع] أن يطلب من شخص يعرف (LDAP ... الخ)" حول أي وكل ( !) السؤال الذي قد يكون لديك. بعبارة أخرى ، أنت لا تستفيد من أي "منطق مزروع في المنزل". بدلاً من ذلك ، تستفسر عن السلطة وتثق ضمنيًا في حكمها.

اه هاه ... انها تماما على التحول العقلي من "إنترنت البرية والغامضة."

المصادقة المستندة إلى النموذج لمواقع الويب

نحن نعتقد أن يجب أن لا يكون مجرد مورد لأسئلة تقنية محددة جدًا ، ولكن أيضًا للمبادئ التوجيهية العامة حول كيفية حل الاختلافات في المشكلات الشائعة. يجب أن تكون "المصادقة المستندة إلى النماذج لمواقع الويب" موضوعًا جيدًا لمثل هذه التجربة.

يجب أن تتضمن موضوعات مثل:

  • كيفية تسجيل الدخول
  • كيفية تسجيل الخروج
  • كيف تبقى مسجلا
  • إدارة ملفات تعريف الارتباط (بما في ذلك الإعدادات الموصى بها)
  • تشفير SSL / HTTPS
  • كيفية تخزين كلمات المرور
  • باستخدام الأسئلة السرية
  • نسيت اسم المستخدم / كلمة المرور
  • استخدام nonces لمنع عمليات تزوير الطلبات عبر المواقع (CSRF)
  • OpenID
  • مربع الاختيار "تذكرني"
  • الإكمال التلقائي للمتصفح من أسماء المستخدمين وكلمات المرور
  • عناوين URL السرية ( URL العام محمي بواسطة الملخص)
  • التحقق من قوة كلمة المرور
  • التحقق من صحة البريد الإلكتروني
  • وأكثر من ذلك بكثير عن المصادقة المستندة إلى النموذج ...

يجب ألا تتضمن أشياء مثل:

  • الأدوار والترخيص
  • مصادقة HTTP الأساسية

الرجاء مساعدتنا من قبل:

  1. اقتراح الموضوعات الفرعية
  2. تقديم مقالات جيدة حول هذا الموضوع
  3. تحرير الاجابة الرسمية



أود إضافة اقتراح واحد استخدمته ، بناءً على الدفاع بعمق. لا يلزم أن يكون لديك نفس نظام المصادقة والتأليف للمشرفين كمستخدمين عاديين. يمكنك الحصول على نموذج تسجيل دخول منفصل على عنوان URL منفرد لتنفيذ شفرة منفصلة للطلبات التي ستمنح امتيازات عالية. هذا يمكن أن يجعل الخيارات التي من شأنها أن تكون بمثابة ألم كامل للمستخدمين المنتظمين. واحدة من تلك التي استخدمتها هي في الواقع تدافع عنوان URL لتسجيل الدخول للوصول للمشرف وإرسال البريد الإلكتروني للمشرف عنوان URL الجديد. توقف أي هجوم على القوة الغاشمة فورًا حيث يمكن أن يكون عنوان URL الجديد صعبًا بشكل تعسّفي (سلسلة عشوائية طويلة جدًا) ولكن إزعاج المستخدم المشرف الوحيد يتابع رابطًا في بريده الإلكتروني. لم يعد المهاجم يعرف إلى أين حتى POST.



فكرت في مشاركة هذا الحل الذي وجدته على ما يرام.

أسميها الحقل الوهمي (على الرغم من أنني لم اخترع ذلك لذا لا ترعيني).

باختصار: كل ما عليك فعله هو إدخال هذا الأمر في حسابك <form>والتحقق من أنه فارغ عند التحقق من صحته:

<input type="text" name="email" style="display:none" />

الخدعة هي خداع البوت إلى الاعتقاد بأن عليها إدخال البيانات في حقل مطلوب ، ولهذا سميت "البريد الإلكتروني". إذا كان لديك بالفعل حقل يسمى البريد الإلكتروني الذي تستخدمه ، فعليك محاولة تسمية الحقل الوهمي بشيء آخر مثل "شركة" أو "هاتف" أو "عنوان بريد إلكتروني". ما عليك سوى اختيار شيء تعرفه لا تحتاج إليه وما يبدو وكأنه شيء يجد الناس عادة منطقيًا لملئه في نموذج ويب. الآن إخفاء inputالمجال باستخدام CSS أو جافا سكريبت / jQuery - أيا كان مناسب لك أفضل - فقط لا تقم بتعيين الإدخال typeإلى hiddenوإلا لن يسقط الروبوت لذلك.

عند التحقق من صحة النموذج (إما من جانب العميل أو من جانب الخادم) ، تحقق مما إذا كان قد تم ملء الحقل الوهمي الخاص بك لتحديد ما إذا كان تم إرساله بواسطة شخص أو برنامج روبوت.

مثال:

في حالة الإنسان: لن يرى المستخدم الحقل الوهمي (في حالتي المسماة "البريد الإلكتروني") ولن يحاول ملؤه. لذا يجب أن تظل قيمة الحقل الزائف فارغة عند إرسال النموذج.

في حالة وجود برنامج روبوت: سيرى البوت حقلًا يكون نوعه textواسمًا email(أو أيًا ما يطلق عليه) وسيحاول منطقيًا ملؤه بالبيانات المناسبة. لا يهمك ما إذا كنت قد صممت نموذج الإدخال مع بعض CSS الرائعة ، فإن مطوري الويب يقومون بذلك طوال الوقت. مهما كانت القيمة في الحقل الوهمي ، فنحن لا نهتم طالما أنها أكبر من 0الشخصيات.

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

وأعتقد أنه يمكن استخدام ذلك أيضًا بشكل جيد باستخدام نموذج تسجيل الدخول / المصادقة.

تحذير : بالطبع هذه الطريقة ليست 100 ٪ خداع. يمكن برمجة Bots لتجاهل حقول الإدخال بالنمط display:noneالمطبق عليها. يجب عليك أيضًا التفكير في الأشخاص الذين يستخدمون نوعًا ما من أشكال الإكمال التلقائي (مثل أن معظم المتصفحات مضمنة!) لتعبئة جميع حقول النماذج تلقائيًا. ربما يمكنهم كذلك التقاط حقل زائف.

يمكنك أيضًا تغيير هذا قليلاً عن طريق ترك الحقل الوهمي مرئيًا ولكن خارج حدود الشاشة ، ولكن هذا يرجع إليك تمامًا.

كن مبدعا!


لا أعتقد أن الإجابة المذكورة أعلاه "خاطئة" ، ولكن هناك مجالات كبيرة من المصادقة لا يتم التطرق إليها (أو بالأحرى التركيز على "كيفية تنفيذ جلسات ملفات تعريف الارتباط" ، وليس على "ما هي الخيارات المتاحة وما هي التجارة الموازنة ".

تعديلاتي / إجاباتي المقترحة هي

  • تكمن المشكلة في إعداد الحساب أكثر من التحقق من كلمة المرور.
  • يعتبر استخدام عامل التوحيد الأثنيني أكثر أمانًا من الوسائل الأكثر ذكاءً لتشفير كلمات المرور
  • لا تحاول تنفيذ نموذج تسجيل الدخول الخاص بك أو تخزين قواعد البيانات لكلمات المرور ، ما لم تكن البيانات المخزنة عديمة القيمة عند إنشاء الحساب وإنشاء ذاتي (أي نمط الويب 2.0 مثل Facebook ، Flickr ، إلخ.)

    1. دايجست للمصادقة هو نهج قائم على المعايير معتمد في جميع المتصفحات والخوادم الرئيسية ، والتي لن ترسل كلمة مرور حتى عبر قناة آمنة.

يتجنب هذا الحاجة إلى "جلسات" أو ملفات تعريف الارتباط نظرًا لأن المتصفح نفسه سيعيد تشفير الاتصال في كل مرة. هذا هو نهج التنمية "خفيفة الوزن".

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

وبالتالي ...

أولاً ، نحن نخلط بين الإنشاء الأولي للحساب (بكلمة مرور) مع إعادة التحقق من كلمة المرور لاحقًا. إذا كنت أنا Flickr وأقوم بإنشاء موقعك لأول مرة ، فإن المستخدم الجديد لديه حق الوصول إلى قيمة الصفر (مساحة فارغة على الويب). أنا حقا لا يهمني إذا كان الشخص الذي يقوم بإنشاء حساب يكذب حول أسمائهم. إذا أنا إنشاء حساب من الشبكة الداخلية للمستشفى / الشبكة الخارجية، والقيمة تكمن في كافة السجلات الطبية، ولذا فإنني لا يهتمون الهوية (*) من منشئ الحساب.

هذا هو الجزء الصعب جدا. و الوحيد حل لائق على شبكة الانترنت هو الثقة. على سبيل المثال ، تنضم إلى المستشفى كطبيب. يمكنك إنشاء صفحة ويب مستضافة في مكان ما مع صورتك ورقم جواز سفرك ومفتاح عام وتجزئة جميعهم باستخدام المفتاح الخاص. ثم تقوم بزيارة المستشفى ويقوم مسؤول النظام بالنظر في جواز سفرك ، ويراها إذا كانت الصورة مطابقة لك ، ثم قم بتجزئة صفحة الويب / تجزئة الصورة بالمفتاح الخاص للمستشفى. من الآن فصاعدا يمكننا تبادل المفاتيح والرموز بشكل آمن. كما يمكن لأي شخص يثق في المستشفى (هناك صلصة سرية BTW). يمكن لمسؤول النظام أيضًا أن يمنحك دونجل RSA أو مصادقة ثنائية أخرى.

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

  1. Kerberos و SPNEGO - علامة واحدة على آليات مع طرف ثالث موثوق به - أساسا التحقق من المستخدم ضد طرف ثالث موثوق به. (ملاحظة: ليس هذا بأي حال من الأحوال عدم الوثوق به OAuth )

  2. SRP - نوع من مصادقة كلمة المرور الذكية بدون طرف ثالث موثوق به. لكننا هنا ندخل في نواحي "الأمان في استخدام المصادقة الثنائية ، حتى لو كان ذلك أكثر تكلفة"

  3. SSLجانب عميل SSL - منح العملاء شهادة مفتاح عام (دعم في جميع المتصفحات الرئيسية - ولكن يثير أسئلة حول أمان الجهاز العميل).

في النهاية ، هناك مقايضة - ما هي تكلفة الاختراق الأمني ​​مقابل تكلفة تطبيق أساليب أكثر أمانًا. في يوم من الأيام ، قد نرى PKI جيدة على نطاق واسع من PKI ، وبالتالي لا توجد نماذج ومصادقة قواعد بيانات مدرجة. يوما ما...


أولاً ، هناك تحذير قوي بأن هذه الإجابة ليست هي الأفضل لهذا السؤال بالتحديد. بالتأكيد لا ينبغي أن يكون الجواب الأعلى!

سأمضي قدمًا وأذكر متصفح Mozilla المقترح (أو ربما بشكل أكثر دقة بروتوكول البريد الإلكتروني الذي تم التحقق منه ) بروح البحث عن مسار ترقية لنهج أفضل للمصادقة في المستقبل.

سوف ألخصها بهذه الطريقة:

  1. تعتبر Mozilla مؤسسة غير ربحية ذات values تتوافق جيدًا مع إيجاد حلول جيدة لهذه المشكلة.
  2. الواقع اليوم هو أن معظم مواقع الويب تستخدم المصادقة المستندة إلى النموذج
  3. الاستيقان المستند إلى النماذج له عيب كبير ، وهو زيادة خطر phishing . يُطلب من المستخدمين إدخال معلومات حساسة في منطقة يسيطر عليها كيان بعيد ، بدلاً من منطقة يسيطر عليها وكيل المستخدم (المتصفح).
  4. نظرًا لأن المتصفحات مضمونة ضمنيًا (الفكرة الكاملة لوكيل المستخدم هي التصرف نيابةً عن المستخدم) ، فيمكنه المساعدة في تحسين هذا الموقف.
  5. القوة الأساسية التي تعوق التقدم هنا هي حالة التوقف التام عن الانتشار . يجب أن تتحلل الحلول إلى خطوات توفر بعض الفوائد الإضافية من تلقاء نفسها.
  6. إن أبسط طريقة لامركزية للتعبير عن الهوية التي بنيت في البنية التحتية للإنترنت هي اسم المجال.
  7. كمستوى ثانٍ للتعبير عن الهوية ، يدير كل مجال مجموعة الحسابات الخاصة به.
  8. شكل "حساب @ domain" هو موجز ومدعوم من قبل مجموعة واسعة من البروتوكولات ومخططات URI. وبطبيعة الحال ، فإن مثل هذا المعرِّف معروف عالميًا باعتباره عنوان بريد إلكتروني.
  9. مزودي خدمة البريد الإلكتروني هم بالفعل مقدمو الهوية الأساسيون الفعليون عبر الإنترنت. تسمح لك تدفقات إعادة تعيين كلمة المرور الحالية عادةً بالتحكم في الحساب إذا تمكنت من إثبات أنك تتحكم في عنوان البريد الإلكتروني المرتبط بهذا الحساب.
  10. تم اقتراح بروتوكول البريد الإلكتروني الذي تم التحقق منه لتوفير طريقة آمنة ، استنادًا إلى تشفير المفتاح العام ، لتبسيط عملية إثبات المجال B التي لديك حساب على المجال A.
  11. بالنسبة إلى المتصفحات التي لا تدعم بروتوكول البريد الإلكتروني الذي تم التحقق منه (حاليًا جميعًا) ، توفر موزيلا الرقاقة التي تنفذ البروتوكول في شفرة جافا سكريبت من جانب العميل.
  12. بالنسبة إلى خدمات البريد الإلكتروني التي لا تدعم بروتوكول البريد الإلكتروني الذي تم التحقق منه ، يسمح البروتوكول لأطراف ثالثة بالعمل كوسيط موثوق به ، مؤكدين على أنهم قد تحققوا من ملكية المستخدم لحساب ما. ليس من المستحسن وجود عدد كبير من هذه الأطراف الثالثة ؛ هذه الإمكانية مخصصة فقط للسماح بمسار الترقية ، ويفضل أن تقدم خدمات البريد الإلكتروني هذه التأكيدات نفسها.
  13. تقدم موزيلا خدماتها الخاصة للعمل كطرف ثالث موثوق به. قد يختار مقدمو الخدمة (أي ، الأطراف المؤيدة) الذين ينفذون بروتوكول التحقق من البريد الإلكتروني الثقة في تأكيدات موزيلا أم لا. تتحقق خدمة Mozilla من ملكية حسابات المستخدمين باستخدام الوسائل التقليدية لإرسال بريد إلكتروني مع رابط تأكيد.
  14. قد يقدم مقدمو الخدمة ، بالطبع ، هذا البروتوكول كخيار بالإضافة إلى أي طريقة أخرى (طرق) للتوثيق قد يرغبون في تقديمها.
  15. تتمثل فائدة واجهة المستخدم الكبيرة التي يتم البحث عنها هنا في "محدد الهوية". عندما يزور أحد المستخدمين موقعًا ويختار المصادقة ، يعرض متصفحه مجموعة من عناوين البريد الإلكتروني ("الشخصية" ، "العمل" ، "النشاط السياسي" ، إلخ) التي قد يستخدمونها لتعريف أنفسهم بالموقع.
  16. هناك فائدة كبيرة أخرى في واجهة المستخدم يتم السعي إليها كجزء من هذه الجهود وهي مساعدة المتصفح على معرفة المزيد حول جلسة المستخدم - الذين قاموا بتسجيل الدخول حاليًا ، في المقام الأول - لذلك قد يعرض ذلك في متصفح Chrome.
  17. نظرًا للطبيعة الموزعة لهذا النظام ، فإنه يتجنب الدخول إلى المواقع الرئيسية مثل Facebook و Twitter و Google وغيرها. ويمكن لأي فرد امتلاك نطاقه الخاص وبالتالي التصرف كمزود هوية خاص به.

هذه ليست مصادقة صارمة على شكل المواقع لمواقع الويب. ولكنها محاولة للانتقال من المعيار الحالي للمصادقة المستندة إلى النموذج إلى شيء أكثر أمانًا: المصادقة المدعومة بالمتصفح.


عند التجزئة ، لا تستخدم خوارزميات التجزئة السريعة مثل MD5 (توجد العديد من تطبيقات الأجهزة). استخدم شيئًا مثل SHA-512. بالنسبة إلى كلمات المرور ، تعد عمليات التجزئة البطيئة أفضل.

كلما تمكنت من إنشاء تجزئات أسرع ، كلما كان بإمكان أي مدقق قوة مطلقة أن يعمل بشكل أسرع. وبالتالي سيؤدي البطء البطيء إلى إبطاء تأثير الغاشمة. خوارزمية تجزئة بطيئة ستجعل الضغط غير العملي مفرطًا على كلمات المرور الطويلة (8 أرقام +)


لا أعرف ما إذا كان من الأفضل الإجابة عن هذا الجواب كإجابة أو تعليق. اخترت الخيار الأول.

فيما يتعلق بالورقة الجزء الرابع: وظيفة كلمة المرور المنسية في الإجابة الأولى ، أود أن أوضح نقطة حول هجمات التوقيت.

في تذكر نماذج كلمة المرور الخاصة بك ، من المحتمل أن يقوم أحد المهاجمين بالتحقق من قائمة كاملة من رسائل البريد الإلكتروني وكشفها المسجلة في النظام (انظر الرابط أدناه).

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

https://crypto.stanford.edu/~dabo/papers/webtiming.pdf


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

يتم استخدام الرمز المميز لضمان صحة المستخدم.







security http authentication language-agnostic article