
عزيزي habrozhitel! أعزائي الخبراء! أقدم لتقييمك مفهومًا جديدًا لتعريف المستخدم على مواقع الويب ، والذي آمل أن يصبح بمساعدتك معيارًا مفتوحًا للإنترنت ، مما يجعل عالم الإنترنت هذا أفضل قليلاً. هذا إصدار مسودة لبروتوكول المصادقة بدون كلمة مرور ، تم تصميمه كمقالة مجانية. وإذا كانت الفكرة الكامنة وراء حصولها على تقييم إيجابي منك ، أيها القارئ العزيز ، فسأواصل نشرها على موقع reddit.com و rfc-editor.org. وآمل أن أكون قادرًا على الاهتمام بمطوري المتصفحات الرائدة في تنفيذه. لذلك ، أتوقع النقد البناء منك.
انتباه: الكثير من النص.
لذا فإن السؤال هو. هل من الممكن تحديد زوار الموقع بشكل لا لبس فيه دون الكشف عن بياناتهم الشخصية والتتبع بين المواقع المختلفة؟ هل من الممكن ، حل هذه المشكلة ، التخلي تمامًا عن الشكل الأكثر بدائية من التفويض عن طريق تسجيل الدخول / كلمة المرور واستخدام ملف تعريف الارتباط / localStorage؟
فمن ناحية ، تحتاج المواقع إلى التعرف على العميل من أجل ، على سبيل المثال ، "استعادة" إعداداتها ، وسلة المنتج ، والإعلانات ، والمقالات ، إلخ. من ناحية أخرى ، يريد الزوار أن يظلوا مجهولين قدر الإمكان ، دون الكشف عن بياناتهم الشخصية ، ومنع مواقع الأطراف الثالثة من تعقبهم. ويمكن للأخير القيام بذلك عن طريق تبادل البيانات التي تم جمعها فيما بينهم.
يبدو الأمر وكأنه مهمة للتأكد من أن الذئاب ممتلئة وأن الأغنام آمنة. هل هذا حقيقي؟
أنا ، إلى حد ما ، أعتقد - حقا.
جدول المحتويات
1 مفهوم المصادقة بدون كلمة مرور1.1 المفاتيح والرموز بدلاً من عمليات تسجيل الدخول وكلمات المرور1.2 هيكل الرمز1.3 رؤوس بروتوكول HTTP1.4 كيف يحدد العملاء المواقع؟1.4.2 كيف أعرف ما إذا كان الموقع يدعم هذا البروتوكول؟1.5 كيف يصرح العملاء بالمواقع؟1.6 كيفية تنفيذ تحديد موثوق للعملاء؟1.7 إذن على الموقع من خلال عيون المستخدم1.8 كيف يتغير مفتاح الموقع؟1.9 كيف يتم تنفيذ ترخيص المجال المشترك؟1.10 كيفية تنفيذ المصادقة عبر المجال؟1.11 تنقل الحساب2 الوصف الفني للبروتوكول2.0 خوارزمية إنشاء مفتاح المجال2.1 الخوارزمية لحساب الرمز المميز المصدر2.2 خوارزمية حماية الرمز أثناء النقل2.3 إجراء تبادل الملح بين المتصفح والخادم2.4 قواعد تكوين حقل السياق2.5 قواعد لتحديد حقول المرسل والمستلم2.6 تفاصيل حول جداول تعريف السياق2.7 سيناريوهات البروتوكول2.8 معالجة الرموز على الخادم2.9 المصادقة عبر المجال3 توصيات السلامة3.1 حماية المعلومات الأساسية من الوصول غير المصرح به3.2 حول كلمات المرور كمفاتيح المجال3.3 مخاطر فقدان / المساس بالمفاتيح وتقليلها4 هجمات على مخطط الترخيص4.1 تتبع المستخدم4.2 هجوم XSS4.3 هجوم CSRF4.4 تتبع باستخدام SSO4.5 التسوية الرئيسية ل SSO4.6 حل وسط رمزي أثناء النقل4.7 القرصنة موقع على شبكة الإنترنت وتسوية الرموزاستنتاجما الخطأ في كلمات المرور؟نعم ، ليس كذلك. يمكن أن تضيع. يمكن سرقتها. يجب أن نتذكرها. على أي حال ، لماذا أنا ملزم بملء بعض أشكال التسجيل والتوصل إلى كلمة مرور أخرى لمشاهدة الطقس أو تنزيل هذا الملف؟ أخيرًا ، كلمات المرور أقل قليلاً من كثير. كم عدد المواقع التي تحبها ، وكلمات المرور. وبالتالي ، يستخدم الكثير منها فعليًا كلمة مرور واحدة على جميع المواقع. شخص ما يستخدم خوارزمية صعبة لتذكرها. أو مدير كلمة المرور. أو ، بغباء ، دفتر ملاحظات. أو تفضل المصادقة عبر النطاق: يمكنك تسجيل الدخول مرة واحدة على موقع واحد ، وهذا كل شيء! نعم ، ليس كل شيء. هذا إذا كان الموقع يدعمه.
كل هذه الأساليب لها عيوب.
استخدام كلمة مرور واحدة على مواقع مختلفة - Moveton. ما يعرفه شخصان ، يعرف الخنزير أيضًا. لا تتوافق جميع المواقع (حتى الكبيرة منها وذات السمعة الطيبة) بصدق مع قواعد الأمان لتخزين كلمات المرور الخاصة بك. تقوم بعض المواقع بتخزين كلمات المرور في شكل مفتوح ، بينما يعتقد البعض الآخر أن تخزين تجزئة كلمة المرور يحميها بالفعل بشكل كافٍ. نتيجة لذلك ، تحدث تسريبات لكلمات المرور والبيانات الشخصية الأخرى للعملاء بشكل منتظم.
مع مدير كلمة السر هو بالفعل أفضل. صحيح ، لا أحد يضمن لك أنه لا يدمج كلمات المرور الخاصة بك في مكان ما. وابحث عن مدير يمكنه مزامنة حساباتك على جميع الأجهزة (كمبيوتر نتبووك منزلي ، هاتف ، كمبيوتر عمل). أنا لا أستبعد وجود هذا.
ولكن على أي حال ، الفكرة نفسها: قم أولاً بالتسجيل على موقعنا (في الوقت نفسه ، إرسال بريد إلكتروني ، جوال ، التبرع بالدم للتحليل) ، ثم اخترع / تذكر اسم المستخدم وكلمة المرور وكن لطيفًا بما يكفي لتذكرها ، لكن أبقِها سرية - النهج ، وأنا أقول لك ، ما إلى ذلك. وليس مدير كلمة مرور واحد سوف يحلها. لكنه يحل
SSO .
هذا مجرد سوء حظ: إذا فقدت كلمة المرور من موقع SSO ونسيتها ، أو سُرق منك ... فقد فقدت الوصول من جميع مواقعك في وقت واحد أو منحته طوعًا لأي شخص ولا يتضح بأي نوايا.
لا تخزن كل البيض في سلة واحدة!وليس حقيقة أن موقع SSO موثوق به. أو لا تخزن كلمات المرور الخاصة بك في نص واضح. أو لا تدمجها طوعًا على الإطلاق ، بالإضافة إلى أنها توفر فرصة للآخرين لتعقبك بين المواقع. حسنا ، أنت تحصل على هذه النقطة.
لذلك: تسجيل الدخول + كلمة المرور = الشر. وكل شر في العالم يجب أن يكون في حالة سكر على محمل الجد ولفترة طويلة. وملف تعريف الارتباط أيضا. جنبا إلى جنب مع التماسيح الجلسة PHPSESSIONID ، JSESSIONID ، ونظيرها.
وماذا تفعل؟أولاً ، عليك أن تفكر في المواقف المعتادة ، والتي سيكون واضحًا منها: لماذا تريد المواقع أن تتذكر عملائها وهل هي ضرورية لهم حقًا؟
- مدونة شخصية "Vasya Pupkina" ، والتي يُسمح فيها ، على سبيل المثال ، بالتعليقات. التسجيل ضروري فقط لحماية نفسه من السير ، وإجراء تصويت مجاني ، وإحصاء "الإعجابات" وغيرها من "مواء مواء" ، وتعيين تقييم للمعلقين. أي هنا ، هناك حاجة إلى وظيفة التعقب حصريًا من قِبل الموقع ، وفقط بواسطة المستخدم (إذا كان يقدّر تقييمه "المعلق" على هذا الموقع) فقط.
- مواقع الشبكات الاجتماعية وغيرها من المتحدثين على الإنترنت (ICQ ، سكايب - هناك أيضًا). يلزم التسجيل لتنفيذ محتوى (مؤلف) مسمى ، للتعرف على زوار بعضهم البعض. أي هنا ، هناك حاجة إلى وظيفة تحديد الهوية إلى حد كبير من قبل المستخدمين أنفسهم . على الرغم من أن مواقع الشبكات الاجتماعية هي الأولى في قائمة "الخطاة" ، إلا أنها تجمع المعلومات الأكثر اكتمالا عن الزوار وتذكركم بجدية ولوقت طويل. لذلك ليس معروفًا بعد من الذي يحتاج إلى مزيد من التعريف.
- موقع الشركة مع محتوى مغلق. هناك حاجة للتسجيل أو الترخيص هنا بشكل أساسي لتقييد الوصول إلى المحتوى. جميع أنواع: المدارس عبر الإنترنت والمكتبات والمواقع الخاصة غير العامة ، وهلم جرا. هنا ، هناك حاجة إلى وظيفة إذن إلى حد كبير من قبل الموقع . كقاعدة عامة ، لا توجد نماذج تسجيل مفتوحة. تتم مشاركة بيانات الاعتماد من خلال قنوات أخرى.
- متجر على شبكة الإنترنت وغيرها من المواد المماثلة التي تبيع المنتجات أو الخدمات أو المحتوى. سأشمل أيضًا مواقع الإعلانات المبوبة المدفوعة / المجانية. هناك حاجة أساسية للتسجيل لتخزين تاريخ طلبات العملاء ، وحتى يتمكن من تتبع وضعهم الحالي ، وتخزين تفضيلاتهم (المفضلة) ؛ من أجل صياغة العروض الشخصية للعميل على أساس تاريخ الشراء والتفضيلات. هنا ، وظيفة تحديد الهوية ضرورية بنفس القدر لكل من العميل والمتجر . ولكن أكثر ، بطبيعة الحال ، إلى المتجر. إلى البخار والبخار والبخار.
- أي حسابات شخصية لمستخدمي خدمات الإنترنت: البريد الإلكتروني ، الخدمات العامة ، سبيربنك عبر الإنترنت ، مكبرات الصوت عبر الإنترنت ، مكاتب مقدمي الخدمات ، CMS من المضيفين ، إلخ. هنا ، يهتم المستخدم نفسه في المقام الأول بالتعريف الصحيح والموثوق . بعد كل شيء ، فهو يدير المعلومات المهمة بالنسبة له ، والتي في بعض الحالات لها عواقب قانونية ومالية. لا رائحة مثل عدم الكشف عن هويته. هي ضارة هنا.
- أجهزة التوجيه وأجهزة التحكم في الإدارة وإصدارات الويب لإدارة شيء ما على شبكة منزلك أو شركتك.
من الواضح أنه في مواقف مختلفة ، قد تكون هناك مخاطر مختلفة. في بعض الحالات ، لن يؤدي التحديد غير الصحيح أو فقدان بيانات المصادقة أو حتى سرقة / تزويرها إلى أي عواقب مهمة على الموقع أو للمستخدم. في حالات أخرى ، سيكون الأمر غير سارٍ (لقد فقدت الكرمة على حبري - "إنها كارثة ...") أو سيؤدي إلى إزعاج (لا يمكنني أن أتحرك في Yula ، انظر إعلاناتي ؛ لقد تمكنت من الوصول إلى مشاريعي على github ، - حسنًا حساب جديد ، مشاريع شوكة). ثالثا ، يمكن أن تنطوي على عواقب قانونية ومالية. لذلك ، يجب افتراض أن مخطط الترخيص المقترح ليس "رصاصة فضية" لجميع الحالات ، وخاصة "العارية".
عند إدارة المعلومات الحساسة ، فإن الأمر يستحق استخدام طرق أخرى لتحديد الهوية والمصادقة أو دمجها (المصادقة ثنائية العامل ، تشفير المفتاح غير المتماثل ، تأمين ثلاثي الأبعاد ، eToken ، رمز OTP ، إلخ).
حسنا ما هي المعارف التقليدية الخاصة بك؟
ماذا يقدم البروتوكول الجديد؟من منظور المستخدم النهائي:
- يجب أن يتذكر الموقع الزائر ويتعرف عليه دون أي تدخل من المستخدم ؛ يجب أن يتعرف عليك الموقع داخل الجلسة وبين الجلسات المختلفة. لا ملفات تعريف الارتباط أو كلمات المرور أو التسجيلات. في الوقت نفسه ، يجب ألا تكون المواقع المختلفة قادرة على تحديد هوية الزائر بشكل فريد ، بحيث تتمكن من تتبع نشاطها على هذه المواقع وغيرها. أي يجب ألا تكون المواقع قادرة على تجميع المعلومات لزوارها.
- يجب أن يكون المستخدم قادرًا على " نسيان أي موقع " في أي وقت ؛ وسوف ينسى الموقع المستخدم. يجب أن تكون هناك إمكانية لمنح حقوق للموقع لتذكر العميل بمبادرة من العميل (بدون انبثاق هوس). يجب أن يكون المستخدم قادرًا على ترحيل هويته الافتراضية بأمان بين الأجهزة المختلفة والمتصفحات (إذا احتاج إليها) حتى يحصل على ترخيص واحد على مواقعه المفضلة.
انا ارى وما هي المكافآت التي يجب أن يحصل عليها مطورو المواقع من هذا؟
- إجراء تحديد أبسط: ليست هناك حاجة لإنشاء الشكل التالي لتسجيل الدخول وتسجيل الخروج والتغيير واستعادة كلمة المرور للمرة الألف. يكفي تنشيط وحدة دعم البروتوكول لإطار العمل المفضل لديك ، والذي يتم تنفيذه على أساس المعيار.
- ليست هناك حاجة لمصمم لرسم نموذج تسجيل الدخول والتفكير في مكان لإخفائه على شاشة المحمول الصغيرة. البروتوكول يجعل الأشكال غير ضرورية على الإطلاق. حسنا ، إلا أن استمارة التسجيل. أين هو بدونهم بعد ذلك. للأسف.
أخيرا:
- يجب أن يكون بروتوكول المصادقة موحدًا وموحدًا ؛ التحقق من خبراء الأمن تمت الموافقة عليه وتوصي به لجان توحيد الويب. ونتيجة لذلك ، فإن احتمال ارتكاب مشرفي المواقع لأخطاء كلاسيكية عند تطوير نماذج قياسية لتسجيل الدخول / الخروج ، وتغيير / استعادة كلمات المرور (نقل كلمات المرور في شكل واضح ، والاستخدام غير الصحيح للتجزئة ، وتخزين كلمات المرور أو التجزئة "غير المملحة" في قاعدة البيانات ، أو سرقة كلمات مرور المستخدم عند موقع القرصنة).
- يجب أن يكون التفويض موثوقًا إلى حد ما (محميًا من التزوير والوصول غير المصرح به مع مصادقة مضمونة) ؛ لا تنشئ ثغرات جديدة على صفحات الويب والمتصفحات ؛ إذا كان ذلك ممكنًا ، قلل من مخاطر هجمات الشبكة المعروفة خارج الصندوق. حسنًا ، أو على الأقل انخفاض كبير في مخاطر تنفيذها الناجح.
بناءً على هذه المتطلبات ، ننتقل إلى الأكثر إثارة للاهتمام: تصميم بروتوكول جديد.
1 مفهوم المصادقة بدون كلمة مرور
1.1 المفاتيح والرموز بدلاً من عمليات تسجيل الدخول وكلمات المرور
لكل مجال ، بما في ذلك المجالات الفرعية ، يقوم متصفح العميل بشكل عشوائي بإنشاء مفتاح فريد من نوعه 256 بت

.
لا ينتقل هذا المفتاح أبدًا. لا تزال ثابتة داخل جلسة المستخدم. كل جلسة جديدة تخلق مفتاح جديد.
مفتاح القائمة

ينشئ المستعرض الرمز المميز 256 بت باستخدام
خوارزمية خاصة 
لتحديد المستخدم مع مجال معين. رمز الهوية

المستخدم (المشار إليه فيما يلي باسم "الرمز المميز") يعمل كبديل لملفات تعريف ارتباط الجلسة مثل PHPSESSIONID و JSESSIONID.
مفتاح

يمكن أن تكون "
ثابتة " من قبل المستخدم. سيسمح إصلاح المفتاح للمستخدم بالبقاء مرخصًا به على الموقع لفترة غير محدودة في جلسات متصفح مختلفة وإعادة الترخيص الموجود مسبقًا. هذا هو
التناظرية لوظيفة "تذكرني" .
عندما يتم إلغاء الالتزام ، فإن المتصفح "ينسى" هذا المفتاح وسيبدأ مرة أخرى في إنشاء مفتاح عشوائي لهذا المجال لكل جلسة جديدة (تبدأ من الجلسة الحالية) ، وهو
مماثل لـ
"خروج" المستخدم من الموقع. الإخراج فوري ، لا يتطلب إعادة تحميل الصفحة.
يمكن للمستخدم
إنشاء مفتاح دائم للمجال . سيسمح المفتاح الدائم ، وكذلك المفتاح الثابت ، للمستخدم بإرجاع الترخيص السابق. في الواقع ،
يصبح هذا
المفتاح بديلاً لاتصال كلمة مرور تسجيل الدخول.يحصل المستخدم على الفرصة للتحكم في وقت استخدام متصفح المجال لمفتاح ثابت ، ومتى - عشوائي. هذا هو
تناظرية وظيفة تسجيل الدخول / الخروج .
يتم تقديم المفهوم
في لقطات أدناه .
توفر طرق إنشاء مفاتيح المجال الثابتة إمكانية تنقل حسابات المستخدمين بين الأجهزة المختلفة. يحدد البروتوكول ما يلي:
- توليد مفتاح المجال على أساس مفتاح المستخدم الرئيسي
- بشكل فردي تشكيل مفتاح المجال على أساس استشعار عدد عشوائي البيولوجي
- استيراد المفاتيح الموجودة من ملف مفتاح من جهاز آخر
1.2 هيكل الرمز
الرمز المميز هو بنية 256 بت ، ممثلة كسلسلة سداسية عشرية:
يشبه جزء تعريف الرمز المميز (أعلى 128 بت) تسجيل الدخول. من خلال سلسلة البتات هذه ، يستطيع الخادم تحديد هوية المستخدم بشكل فريد.
يشبه جزء المصادقة في الرمز المميز (أقل من 128 بت) كلمة المرور. يساعد تسلسل البتات هذا الخادم في التحقق من صحة الرمز.
موصوفة قواعد التحقق من صحة رمز
أدناه .
1.3 رؤوس بروتوكول HTTP
الرؤوس المستخدمة من قبل العميل:CSI-Token : يستخدم <Token> لإرسال رمز مميز إلى الخادم
CSI-Token : <Token1>؛ يستخدم التغيير
إلى <Token2> لتغيير الرمز المميز الحالي:
- عند التفويض على مفتاح دائم ،
- عند تسجيل مفتاح دائم ،
- عند تغيير المفتاح الدائم.
CSI-Token : <Token>
دائم يُستخدم عند إصلاح المفتاح العشوائي الحالي من قبل المستخدم.
CSI-Token : <Token>
يتم استخدام
تسجيل الخروج لإنهاء الجلسة الحالية قبل الأوان.
الرؤوس المستخدمة من قبل الخادم:دعم CSI: نعم يخبر العميل بأن الخادم يدعم بروتوكول المصادقة على CSI.
CSI-Token-Action: يستخدم
النجاح لإخطار المستعرض بقبول رمز مميز جديد للمستخدم (مفتاح التغيير إلى).
CSI-Token-Action: إحباط يلغي الإجراء الخاص بتغيير الرموز المميزة (التراجع إلى الرمز المميز السابق).
CSI-Token-Action: يخبر
التسجيل المستعرض أن رمز المستخدم الجديد لا يزال قيد التسجيل.
CSI-Token-Action: خطأ في التحقق من الرمز المميز من جانب الخادم
غير صالح .
أخيرا،
يتم إرسال
CSI-Salt بواسطة كل من المتصفح والخادم عند تبادل "الملح" المستخدم لحماية الرمز المميز (جزء المصادقة).
انظر أدناه لمزيد من التفاصيل.
1.4 كيف يحدد العملاء المواقع؟
يمكن للموقع استخدام رمز مميز لتعريف زائر الموقع. في الوقت نفسه ،
يضمن نظام إنشاء الرمز المميز وسعتهما 256 بت
رموزًا فريدة لكل زوج: مجال المستخدم. سيرى مجال آخر رمز مستخدم آخر. حتى لو تم تنفيذها في سياق الموقع المستهدف (عبر IFRAME ، IMG ، LINK ، SCRIPT). بالإضافة إلى ذلك ، تقوم خوارزمية الجيل المميز الخاصة بحماية المستخدمين من هجمات XSS و SRF وتجعل من المستحيل تتبع مستخدم دون علمه. ولكن في الوقت نفسه ،
تظل تقنية
الدخول الموحّد (SSO) ممكنة بفضل إذنها وتحديد النطاقات المشتركة.
يتم إرسال الرمز المميز
في رأس HTTP CSI-Token مع كل طلب إلى أي مورد مجال (الصفحة ، المستند ، الصورة ، البرنامج النصي ، النمط ، الخط ، الملف ، طلب ajax ، ...):
يتم
إعادة حساب الرمز المميز
بناءً على كل طلب HTTP (S) : صفحة ، صورة ، طلب ajax.
من أجل تحسين العمليات الحسابية ، يُسمح بالتخزين المؤقت للرموز بواسطة المستعرض ، ولكن فقط طوال مدة الجلسة وفقط إذا ظلت شروط تلبية الطلب دون تغيير.
كما هو مذكور أعلاه ، يمكن أن يعمل الرمز المميز كبديل لملفات تعريف ارتباط الجلسة مثل PHPSESSIONID و JSESSIONID. يتمثل الاختلاف الوحيد في أنه إذا كان الموقع قد أنشأ في السابق معرفًا للزائر لتتبع مستخدم معين بين طلباته المختلفة (بعد كل ذلك ، تأتي آلاف الطلبات من مستخدمين مختلفين إلى الموقع في نفس الوقت) ، يقوم العميل الآن بتنفيذ هذه الوظيفة.
يعد هذا التعريف كافيًا تمامًا للسماح لك بإجراء عمليات شراء في المتجر عبر الإنترنت أو الإعلان على المواقع المناسبة أو الكتابة على المنتديات أو الشبكات الاجتماعية أو مقالات ويكيبيديا أو هابري.
نعم ، يظل المستخدم مجهولًا للموقع. ولكن يمكن أن تكون "مألوفة" مجهولة المصدر للموقع. ويمكن للخادم حفظ الرمز المميز لمثل هذا المستخدم من جانبه ، جنبًا إلى جنب مع بياناته (حساب شخصي مع المشتريات ، التفضيلات ، الكرمة ، الكعك ، الإعجابات والمكافآت الأخرى). ولكن فقط للحفاظ على بشرط الانتهاء من أي عملية تجارية: الشراء ، تقديم الإعلان ، الخ يتم تحديد الشروط بواسطة الموقع نفسه.
كما ترى ، فإن البروتوكول بسيط قدر الإمكان بالنسبة للمواقع التي لا تحتاج إلى تسجيلك قبل أن تتيح لك الفرصة لاتخاذ أي إجراء. لكن أولئك الذين يحتاجون إليها سيكونون أكثر صعوبة قليلاً. ولكن المزيد عن ذلك أدناه.
1.4.2 , ?
http-
CSI-Support: yes Response Headers :
, , . , :
, ,
www.youtube.com :
.
.
1.5 ?
, , – . , , – «».
, , , . .
: . . - .
« » . . « »:
, , . .
, , . .
, HTTP-
CSI-Token-Action , .
II .
1.6 ?
( , , ) , : , , . (, . , ).
1.7
, CSI, . , . :
, . , , , . , . . . , , , . . .
, . :
, :
, -.
. . , - / :
- «» :
. «» :
( ) HEAD, CSI-Token <>; Logout.
, , Logout. , ( ). , .
: , ajax-, .. – , .
: , , . «» . .
1.8 ?
, .
II .
, ,
CSI-Token Changed-To :
. , , . . (Response Headers) :
CSI-Token-Action: success , .
(, )
CSI-Token-Action: aborted., CSI-Token-Action, CSI-Token Changed-To.
« » .1.9 - ?
يتمتع الترخيص التقليدي عبر النطاق باستخدام تقنية
SSO بالعديد من المزايا للمستخدم. لا تحتاج إلى تذكر مجموعة من كلمات المرور من مجموعة من المواقع. ليست هناك حاجة للتسجيل وملء النماذج الكئيبة. تسأل بعض خوادم التخويل عن حقوق منح الموقع الذي طلب SSO.
ولكن هناك أيضا عيوب.
أنت تعتمد على مزود خدمة الدخول الموحد. إذا لم يعمل خادم SSO ، فلن تصل إلى الموقع المستهدف. إذا فقدت كلمة مرورك أو سُرق حسابك - ستفقد إمكانية الوصول من جميع المواقع في وقت واحد.
لمطوري الويب ، الأمور معقدة بعض الشيء. من البداية ، تحتاج إلى تسجيل موقعك على خادم التخويل ، والحصول على المفاتيح ، ومعرفة كيفية العمل مع البروتوكول (
SAML ،
OAuth ، وما إلى ذلك) والمكتبات المقابلة ، تأكد من عدم انتهاء صلاحية المفتاح ، وأن خادم التخويل لا يحظر موقعك لأسبابك و إلخ هذا رسم لحقيقة أنك لست بحاجة إلى الاحتفاظ بحسابات المستخدمين ، أو القيام باستمارات التسجيل ، أو تسجيل الدخول ، إلخ. الحقيقة تزيد من تكلفة الصيانة (في شكل إصلاح الفشل المفاجئ). مرة أخرى ، إذا كان الخادم غير متاح فجأة للموقع ، ثم للأسف.
نظام الترخيص هذا يجعل SSO أكثر أمانًا بقليل ، ويكون التفويض لجميع المشاركين أسهل. حول الأمان سيتم مناقشته أدناه في قسم
"التسوية الرئيسية ل SSO".ألقِ نظرة على الموقع S ، الذي يدعم خدمة الدخول الموحّد من Google. افترض أن لديك حساب Google. لتسجيل الدخول ، انقر فوق الرابط "تسجيل الدخول باستخدام Google" ، والذي سيفتح علامة تبويب ترخيص Google. سيخبرك المتصفح أن لديك مفتاحًا لـ Google. وستخبرك Google بالحقوق التي تطلبها S.
إذا وافقت ، انقر فوق "تسجيل الدخول" في مدير المفاتيح. سيتم إعادة تحميل الصفحة. ستتلقى Google بالفعل رمزها الصحيح ، وتتعرف عليه وتفوضه. ومع طلب inter-server ، سيُبلغ الموقع S بمعلومات حسابك وفقًا للحقول المطلوبة.
ستحتوي الصفحة التي أعيد تحميلها على زر "التالي" الذي يعيدك إلى الموقع المستهدف.
في التوضيحوسيقدم مثالًا على هذه الخوارزمية عند التسجيل على
www.youtube.com باستخدام تفويض عبر المجال من خلال accounts.google.com.
قد يقرر الموقع S حفظ البيانات الخاصة بك في قاعدة البيانات الخاصة به أم لا. هذه المشكلة خارج نطاق مخطط الترخيص المقترح. ولكن علاوة على ذلك ، حيث سننظر في مخاطر فقدان مفتاح SSO ، يوصى الموقع بإبقاء الرمز المميز للمستخدم ومعرف SSO من جانبه ، وينصح المستخدم بإنشاء مفتاح دائم لـ S.
نقاط الضعف: بعد هذا الترخيص ، ستتمكن المواقع S1 و S2 و S3 و ... (حيث قمت بتسجيل الدخول عبر Google) من التعرف عليك (بواسطة المعرف الذي حددته لك Google) ونتيجة لذلك ، تتبع نشاطك.
خيار الحماية: لا تعمل في وقت واحد على المواقع إذا قمت بالتسجيل من خلال SSO للمزود نفسه. إذا كان ذلك ممكنًا ، فقم بتسجيل الخروج من خادم التخويل فور اكتمال التفويض ("الخروج التلقائي" للمجال).
1.10 كيفية تنفيذ المصادقة عبر المجال؟
كل هذا ، بالطبع ، جيد. بينما يتم تنفيذ العمل على متصفح واحد - كل شيء على ما يرام. ولكن ماذا عن الحقائق الحديثة عندما يكون لدى شخص ما هاتفان محمولان ، أحدهما يعمل على الكمبيوتر وعدة متصفحات عليه ، وجهاز كمبيوتر منزلي وجهاز كمبيوتر محمول آخر؟ بالإضافة إلى قرص مشترك للزوجة / الأطفال.
سيتعين علينا حل مشكلة نقل مفاتيح النطاق بين المتصفحات والأجهزة بطريقة أو بأخرى. وأيضا حل مسألة التزامن الصحيح.
تتمثل إحدى آليات حل هذه المشكلة في حساب مفاتيح المجال المختلفة استنادًا إلى مفتاح رئيسي مشترك دون إمكانية الاسترداد العكسي للمفتاح الرئيسي من مفتاح مجال معروف.
من خلال إنشاء مفتاح شخصي K للمجال D باستخدام المفتاح الرئيسي M على جهاز واحد ، سيكون المستخدم قادرًا على إنشاء نفس المفتاح K للمجال D وعلى أي مفتاح آخر باستخدام نفس المفتاح الرئيسي M وخوارزمية واحدة. بتعبير أدق ، لن يتم ذلك من قبل المستخدم ، ولكن بواسطة متصفحه. مع هذا النهج ، يكفي للمستخدم أن يوزع مفتاحه الرئيسي بين جميع المتصفحات المستخدمة من قبله وأنه "ينقل جميع مفاتيحه" من المجالات في وقت واحد. في الوقت نفسه يجعل النسخ الاحتياطي بهذه الطريقة.
راحة المستخدم القصوى.
ولكن أيضا الحد الأقصى للمخاطر في حالة وجود حل وسط للمفتاح الرئيسي. لذلك ، يجب حماية الأخير وفقًا لذلك. يتم وصف مخاطر فقد أو اختراق المفتاح الرئيسي وطرق تقليل هذه المخاطر في الفصل
"3 توصيات السلامة" .
إن استخدام مفتاح رئيسي واحد فقط لإنشاء جميع المفاتيح لجميع المجالات ليس دائمًا خيارًا مناسبًا. أولاً ، ما الذي يجب فعله إذا تم اختراق مفتاح المجال فجأة وتحتاج إلى تغيير؟ ثانياً ، ماذا لو كنت بحاجة إلى مشاركة مفتاح مجال مع شخص آخر؟ على سبيل المثال ، بين أفراد الأسرة. أم هو حساب وصول البريد العام للشركة. كيف ثم "التقاط" مفتاحك (لأنه في الواقع قد تم اختراقه)؟
لذلك ، يجب أن تدعم المتصفحات توليد مفاتيح النطاق الفردية باستخدام مستشعر الأرقام العشوائي البيولوجي. ولكن بعد ذلك ، نعود مرة أخرى إلى مسألة تنقلنا ومسائل المزامنة ووظائف تصدير المفاتيح واستيرادها في المتصفح وإنشاء نسخ احتياطية.
نقل من خلال جهاز alienable المادية
يمكن أن تكون البطاقات الذكية ورموز USB مناسبة تمامًا كتخزين آمن للمعلومات الرئيسية (لأنها تم إنشاؤها لهذا الغرض). المصادقة ثنائية العامل تحمي المفاتيح من الوصول غير المصرح به من خلال الوصول المباشر إلى الجهاز.
تتطلب البطاقات الذكية الحقيقية قراءًا خاصين (ناهيك عن برامج التشغيل) ، مما يحد من استخدامها فقط على محطات العمل المزودة بمثل هؤلاء القراء.
مع الرموز USB أسهل قليلا. مطلوبة فقط السائقين. لكن لا يمكنك لصق مثل هذا الرمز المميز في الهاتف. وعلى الرغم من وجود رموز مميزة للهواتف المحمولة على شكل بطاقات SD ، إلا أن هذا الحل يضيف إلى الحركية. حاول سحب بطاقة من هاتف محمول ، ولكن أدخلها في بطاقة أخرى. وليس هذا مستحيلاً. الشيء هو أنها ليست مريحة.
وإذا كسر الرمز المميز؟ ثم كل ما تبذلونه من المفاتيح سوف تذهب إلى Cthulhu العظمى.
لذلك سيكون هناك إغراء مع مثل هذا المخطط لاستخدام العديد من الأجهزة المكررة. ولكن لا يزال يتعين عليك حل مشكلة مزامنة المفاتيح إذا كان لديك العديد من البطاقات الذكية.
وبصراحة ، هذه الأجهزة ليست محمية من keyloggers. الآن ، إذا تم إدخال الرمز السري من البطاقة / الرمز المميز نفسه. ثم شيء آخر. لكنني لم أر مثل هذا في الطبيعة.
الايجابيات: يمكن استخدام مفاتيح عشوائية 256 بت ؛ اجراءات امنية مشددة من خلال استخدام المصادقة الثنائية ؛ أعلى مستوى من الحماية ضد العبث المباشر.
سلبيات: تبعية الجهاز ؛ يتطلب تكاليف مالية ؛ انخفاض الحركة. الحاجة إلى حجز البطاقات ، ونتيجة لذلك ، مزامنة البيانات بينها ؛ الضعف لا يزال keyloggers.
المزامنة عبر الخدمة عبر الإنترنت
"التكنولوجيا السحابية" يتم تحريكها الآن كلما كان ذلك ممكنًا. يبدو أنهم ، مع blockchain ، أصبحوا بديلاً عن "تقنية الموز". بطبيعة الحال ، هناك رغبة في استخدام منصة إنترنت معينة لتبادل المعلومات الأساسية. وهناك نوع من البطاقة الذكية "عبر الإنترنت".
ماذا؟ قمت بتسجيل الدخول باستخدام مخططنا مجهول الهوية على هذا الموقع ؛ إرسال مفاتيحك مشفرة بكلمة مرور هناك ؛ تذهب من جهاز آخر إلى نفس الموقع بنفس المفتاح / كلمة المرور ؛ تحصل على المفاتيح من هناك ؛ يمكنك مزامنة التغييرات بحلول تاريخ التحرير. على غرار مدير كلمات المرور ، هذا فقط متصل.
هذا فقط ، لا يضمن أي شخص أن الخدمة عبر الإنترنت لن يتم اختراقها أو لن تقوم بدمج المفاتيح الخاصة بك ، وإن كانت مشفرة ، عند الضرورة. من سينفذ هذه الخدمة مجانًا. هذا كل شيء.
على الرغم من أن كلمة المرور ، بالطبع ، تحمي المفاتيح من الاستخدام المباشر. ولكن هل كلمة المرور مقاومة للقوة الغاشمة "غير متصل"؟ هذا سؤال آخر.
الايجابيات: التنقل عالية الاعتماد. استقلال الجهاز والمتصفح ؛ لا تحتاج إلا إلى كلمة مرور واحدة (على الرغم من أنها لم تترك كلمة المرور ، إلا أنها أفضل بالفعل).
العيوب: أقل أمانًا من تخزين المفاتيح على وسيط قابل للتحويل. في الواقع ، يعتمد أمان المفاتيح على قوة كلمة المرور للاختيار.
يمكنك بالطبع استخدام مفتاح رئيسي لتشفير المفاتيح الأخرى. الذي تحسب به مفاتيح المجال الأخرى. كخيار.
2 الوصف الفني للبروتوكول
2.0 خوارزمية إنشاء مفتاح المجال
يحدد هذا البروتوكول طريقتين فقط لإنشاء مفاتيح المجال.
- يعتمد على مولد رقم عشوائي (يفضل بيولوجي)
- يعتمد على مفتاح رئيسي 256 بت
في الحالة الأخيرة ، يتم حساب مفتاح المجال على النحو التالي:

حيث

- المفتاح الرئيسي 256 بت ، المجال - اسم المجال الذي تم صنع المفتاح من أجله.
فيما يلي ،
HMAC عبارة
عن خوارزمية تشفير تجزئة تستند إلى تطبيق 256 بت لوظيفة تجزئة
SHA-2 .
التسوية أو الكشف الطوعي عن مفتاح المجال لا يعرض المفتاح الرئيسي الأصلي للخطر.
يوفر المفتاح الرئيسي آلية لتنقل بيانات اعتماد المستخدم.
مذكرةفي الإصدار الأولي من البروتوكول ، تم النظر في خيار إنشاء مفاتيح المجال استنادًا إلى كلمة مرور المستخدم على أنه يضمن تنقل المستخدم والحماية من اختراق كلمة المرور عند اختراق موقع. ولكن في الفصل
"3 توصيات تتعلق بالسلامة" ، سيتم تقديم توضيحات حول سبب رفض مثل هذا المخطط.
إذا تم اختراق المفتاح الذي تم إنشاؤه على أساس "master" ، أو تم اختراق الرمز المميز المحسوب من هذا المفتاح (نتيجة لاختراق الموقع) ، فيجب تغيير المفتاح. يمكنك تغييره إلى مفتاح 256 بت عشوائي ، أو إنشائه من نفس "المعالج" ، مع إضافة إصدار:

فيما بعد ، الرمز

سيتم استخدامه لعملية تسلسل السلسلة (صفائف البايت).
2.1 الخوارزمية لحساب الرمز المميز المصدر
يتم حساب رمز مصادقة المستخدم مع كل طلب من أي مورد المجال. لحساب الرمز المميز للطلب ، يتم أخذ البيانات التالية:
- المرسل - اسم مجال بادئ الطلب (يمكن أن يكون صفحة ذات إطار iframe أو برنامج نصي من مجال شخص آخر يقوم بالبحث) ،
- المستلم - اسم مجال المستلم (حيث يتم إرسال الطلب) ،
- السياق - طلب تنفيذ السياق ،
- الحماية - تسلسل عشوائي من 32 بايت (256 بت) ، إذا كان السياق فارغًا ؛ فارغة خلاف ذلك
هذه البيانات متسلسلة ومقسمة بـ 256 بت SHA-2
على المفتاح K الخاص بالمجال الذي يبدأ الطلب :

يتم الحصول على رمز مميز صالح عندما لا يكون السياق فارغًا. من أجل التحديد الصحيح على الموقع المستهدف ، يجب أن يتحقق الشرط المرسل = المستلم = السياق.
يُستخدم حقل السياق ، إلى جانب الحماية ، للحماية من هجمات
XSS و
CSRF ، وكذلك من تتبع المستخدم.
سيتم تقديم توضيحات أكثر تفصيلاً حول قواعد تحديد المرسل / المستلم / السياق أدناه.
2.2 خوارزمية حماية الرمز أثناء النقل
يتم إرسال رمز العميل الأصلي نادرًا جدًا. فقط عند نقل رمز مميز غير مسجل في وقت إنشاء الجلسة.
يعتبر الرمز مميز غير مسجل إذا: تم إنشاؤه على أساس مفتاح عشوائي (غير ثابت) ؛ لم يتم قبوله من قبل الخادم بعد إرسال التغيير إلى أو المفتاح الدائم. لمزيد من التفاصيل ، راجع
"معالجة الرموز على الخادم" .
يقوم المتصفح والخادم بشكل مشترك بإنشاء زوج من الأرقام العشوائية ، ما يسمى الملح (الملح) ، الذي تم تجزئة به أقل من 128 بت من الرمز المميز. كلاهما تبادل هذه الأرقام وفقا للبروتوكول. لمزيد من التفاصيل ، راجع
"خادم متصفح إجراء تبادل الملح" .
وبالتالي ، يرى خادم الموقع الرمز المميز التالي:

حيث

- ارتفاع 128 بت ،

- أقل من 128 بت من الرمز الأصلي ،

- سلسلة السلسلة. في هذه الحالة ، الرمز المميز الأولي

يجب أن تكون معروفة بالفعل إلى الخادم.
من الناحية المثالية ، يجب أن يتغير CSI-Salt في كل مرة يطلب فيها المتصفح خادمًا. ومع ذلك ، يمكن أن يكون هذا متطلبًا مكلفًا من حيث موارد الحوسبة. بالإضافة إلى ذلك ، يمكن أن "يقتل" القدرة على إرسال طلبات متوازية إلى الخادم.
لذلك ، من أجل تحسين العمليات الحسابية ، يُسمح بالاحتفاظ بقيم CSI-Salt دون تغيير في طلبات مختلفة ،
ولكن لا تزيد عن جلسة واحدة . يمكن أن يكون هذا الحد الزمني (تغيير CSI-Salt كل 5 دقائق) ، أو رد فعل على كثافة الطلبات (تغيير CSI-Salt كل 100 طلب) ، أو بعد كل سلسلة من الطلبات (في وقت الإيقاف المؤقت ، خادم العميل) ، أو إصدار مختلط. هنا يتم ترك القرار لمطوري المتصفح.
يؤدي الاحتفاظ بـ CSI-Salt دون تغيير لفترة طويلة إلى إضعاف حماية الرمز المميز المنقول ، مما يسمح للمهاجم ، عند اعتراض الرمز المميز ، باستخدامه حتى يكمل المستخدم الشرعي تسجيل الخروج ويقدم طلبًا غير مصرح به نيابة عن الضحية.
2.3 إجراء تبادل الملح بين المتصفح والخادم
2.3.1 الرمز استنادًا إلى مفتاح خادم عشوائي أو غير مسجل
[1] .
2.3.2 الرمز استنادًا إلى المفتاح المسجل بواسطة الخادم
[1] .
[1] يُعد الرمز المميز غير مسجل إذا: تم إنشاؤه على أساس مفتاح عشوائي ؛ لم يتم قبوله من قبل الخادم بعد إرسال التغيير إلى أو المفتاح الدائم باستخدام CSI-Token-Action: استجابة النجاح.
[2] يتم تحديد الوقت الذي يتم من خلاله تغيير CSI-Salt بواسطة المتصفحات نفسها. يمكن أن يحدث هذا بعد سلسلة من الطلبات ، بعد انقضاء مهلة ، بعد عدد معين من الطلبات. – CSI-Salt .
[3] 16- 128- . , : salt || S salt . – , . , , .2.4 Context
, ( ).
. .
, .
, . , , ajax- .
, . , <script>, , . , <script>, , , . <script> .
LINK, SCRIPT, IMG, IFAME , - , DOM –
.
FORM, A, META , (submit, click, timeout) –
.
, .
, .
FORM , , INPUT, .
, , , , , , .
.
. , , click ( ), submit ( ) onclick/onsubmit.
. – META http-equiv=«refresh» content=«0».
P. Context( SRC IMG), , , / , — , «».
R. Context /
[1]
[2]
[3] Inherit , Empty
[4] Inherit , Empty (. )Referrer – Referrer.
Page – (Tab) .
Empty – .
Domain – Context
Inherit – Context
Variant – Context «-»
P1..PF, R1..RC .
Referrer Domain . , , , .
2.5 Sender Recipient
Sender – //, . , , . ajax. . .
Recipient – , .
, .
site.net. :
- site.net/css/common.css
- common.css fonts.google.com/fonts/Roboto.css
- Roboto.css fonts.google.com/fonts/Roboto.ttf
- , img.site.net/picture1.jpg
- , adriver.ru/frame
- adm.site.net/admin.js
( adriver.ru) :
- adriver.ru/style.css
- img.adriver.ru/img/01.png
- adriver.ru/libs.js
- api.adriver.ru/v1/ad.js
Sender / Recipient DOM
Sender / Recipient ajax-.
Sender / Recipient
2.6 Context
, ( ) , Context .
P1 – submit . / . . .
site.net google.com, Context (google.com). site.net ( , ).
( )
P1 , Context site.net, .. Context = Referrer.
CSRF -.
P5 – , / , ; submit , / ( FORM, INPUT). / .
P9 – ,
P5 , , ( ).
PD – . .
URL . .
, , , , ,
PG ( ). F5, ,
PG . Enter
PD .
CSRF- .
Context, , F5 ( ). , - (
P1 ).
, site.net, , . , , … , , , site.net.
P2 – , , click/submit. , . .
, Context . , Context .
P6 – ,
P2 , / / .
PA – ,
P2 , / / .
PE – window.location.href window.open(…).
site.net , Context . Context = site.net.
ya.ru, maps.ya.ru, Context . Context , .
, – . CSRF-.
P3 –
P2 , click/submit . Context ( ), ( ).
P7 –
P6 , / / .
PB –
PA , / / .
PF –
PE , .
P4 – <META>. . . Context .
PE .
P8 — <META>. / . , Context .
PE . .
PC –
P8 , . Context .
PG – . , , . , , . , Context .
CSRF- .
, Context .
, , ( ) HTTP- Header. , Context . – .
- -.
, - . SSO- – .
« » , - . :
- ;
- SSO- , ;
- SSO-;
- SSO-, Changed-To, - ;
- - «», ;
- P1 , -, (, ).
- -, , .
, , , . UI- :
SSO-. .
, , Context .
R1 – ( ). Context Context .
, site.net adriver.ru, img.disk.com, HTTP- img.disk.com Context , site.net.
R4 – ,
R1 . / , DOM Parser . , site.net/index.html site.net/require.js ( <script src=…>) site.net/min.js, main.js. Context , site.net.
R7 – ,
R1 . / , Context 256- . evil.com/drop.js, site.net, site.net , .. .
RA – . , site.net/css/common.css, site.net/index.html, fonts.google.com/fonts/Roboto.css, fonts.google.com Referrer = site.net/css/common.css. Context Referrer. Roboto.css Roboto.ttf, fonts.google.com/fonts/Roboto.ttf Referrer = fonts.google.com/fonts/Roboto.css. Context Referrer, .
, , Roboto.css ( ) /, CSRF- :
@import "https://site.net/api/payment?victim_params"
على أمل تلبية الطلب على site.net نيابة عن مستخدم مخول. ولكن المشكلة بالنسبة للمهاجم هي أن site.net يتوقع أن يتلقى رمز مميز من المستخدم:

ثم ، كما هو الحال مع طلب CSRF ، سيقوم المتصفح بإنشاء رمز مميز:

وسيقدم طلب إلى الموقع نيابة عن موقع مجهول ليس لديه حقوق الوصول لأداء هذه العمليات.
RB - يتم تحميل المحتوى بواسطة البرنامج النصي الخاص بالموقع. في هذه الحالة ، يتم استخدام السياق لحساب الرمز المميز للطلب ، والذي يساوي الصفحة التي تحتوي على البرنامج النصي. بالنسبة للبرنامج النصي site.net/1.js من صفحة سياق site.net ، سيكون مساوياً لسياق الصفحة نفسها.
لاحظ أن سياق الصفحة نفسها لا يساوي دائمًا اسم نطاق الصفحة ويعتمد على كيفية فتحه في الأصل.
لنفترض أن موقع المهاجم evil.com يفتح صفحة الموقع site.net الذي تمت مهاجمته ، حيث ينفذ النص site.net/util.js طلبًا باستخدام المعلمات التي تم تمريرها عبر عنوان URL للصفحة. يأمل المهاجم ، عن طريق تمرير "معلماته" عبر عنوان URL ، في فرض البرنامج النصي site.net/util.js الخاص به لتنفيذ طلب ajax لتنفيذ إجراءات مهمة نيابة عن الضحية.
لنفترض أن المستخدم نفسه ذهب إلى evil.com عبر رابط مباشر. ثم السياق ل evil.com سيكون evil.com. المزيد evil.com يفتح موقع site.net/api/payment؟victim_params النصي بنص ، على أمل تنفيذ هجوم ، ولكن حقل سياق الموقع site.net سيكون فارغًا (حالة PE / PF). النص البرمجي site.net/utils.js ، الذي ينفذ طلب ajax ، سوف يجبر المستعرض على أخذ السياق من صفحة site.net. وهو فارغ معنا. ولكن بعد ذلك سيتلقى site.net طلب ajax مع هذا الرمز المميز:

بينما بالنسبة للمستخدم المصرح له ، من المتوقع:

ستشاهد site.net رمزًا غير معروف ولن يتمكن من تحديد هوية المستخدم. عملت الحماية.
بالمناسبة ، بسبب هذا المخطط ، سيكون إجراء تفويض عبر المجال من خلال النوافذ المنبثقة أمرًا غير واقعي.
لتنفيذ SSO بموجب البروتوكول ، يجب عليك فتح علامة تبويب جديدة لصفحة خادم التخويل. وفي الوقت نفسه ، يجب على المستخدم فتح علامة التبويب هذه. الخيار الأفضل هو فتح المستخدم الرابط المناسب من الموقع المستهدف.
RC - يتم تحميل المحتوى بنص موقع خارجي. في هذه الحالة ، يتم استخدام السياق لحساب الرمز المميز للطلب ، وهو يساوي حقل طلب الإحالة.
على الرغم من أن
RA و
RB و
RC يحميان من هجمات CSRF ، إلا أنهما يؤديان إلى توليد رموز ثابتة.
ويتيح لك ذلك تطبيق مصادقة المجال المشترك ومصادقة مستخدم
المجال المشترك (عندما تحتاج إلى تحديد أن العديد من الطلبات إلى خوادم مختلفة جاءت من هذا المستخدم). ما الذي يمكن تنفيذه لتزويده بسلطة متساوية على مجموعة من المجالات ذات الصلة.
إذا
تم فتح صفحة الموقع تلقائيًا من موقع آخر ، فلن تتمكن من تسجيل الدخول إليها ، حتى إذا قمت بإعادة تحميل هذا الموقع بنفسك. لأن المصدر سيرث من قيمة فارغة. يجب أن يشير المستعرض إلى المستخدم حول هذه الحقيقة (المصدر = عشوائي):
يتم ذلك للحماية من المواقع التي تفرض فتح النوافذ المنبثقة الأخرى (نفسها أو نصوصها الخارجية) ، وعلى المواقع التي تفتح ، ستقوم بإعادة التشغيل أو إنشاء أزرار "إغلاق" وهمية على الشاشة بأكملها تؤدي إلى نفس المواقع. أي هذا يمنع محاولة تتبعك ، على أمل الحصول على رمز صالح.
أي محاولة من قبل الموقع لتقليد أفعالك باستخدام برنامج نصي خارجي أو محاولة من برنامج نصي خارجي لإنشاء علامة بادئة بشكل مباشر أو غير مباشر وإزاحتها لك ، ستؤدي إلى مصدر فارغ وإضافة وحدات بايت عشوائية في وقت حساب التجزئة الرمز المميز.
لن تساعد خدعة إنشاء أو تعديل العلامة <script> في الصفحة التي تمت مهاجمتها في DOM. سيبقى حقل المصدر فارغًا.
ولكن في ظل نفس الظروف ، ستؤدي البرامج النصية الداخلية إلى استعلامات مع Source تساوي قيمتها السابقة. وإذا كانت الصفحة الأصلية تحتوي على Source = Domain ، فسيكون كل شيء على ما يرام. سيبقى المستخدم مصرحًا به لمثل هذه الطلبات.
ولكن مع تنزيل البرامج النصية من موارد الجهات الخارجية (CDN) ، قد تنشأ مشاكل في بعض الحالات. وهذا صحيح ، لأن سلامة رمز CDN غير مضمونة. إذا كنت لا تريد أن تفقد ترخيص المستخدم ، فاحتفظ بالنصوص على موقعك وقم بتنزيلها من نطاقك. هذا يشبه حظر استخدام روابط http على صفحات https.
نحن نصف الموقف الذي قد يقع فيه المطور. نتيجة لإجراءات المستخدم ، يعيد البرنامج النصي توجيه المستخدم المخول إلى إحدى صفحات الموقع (على سبيل المثال ، يتم ذلك عن طريق نموذج) ، مما يتطلب أن يظل المستخدم مصرحًا به. يدعو البرنامج النصي الخاص بك ، على سبيل المثال ، $ (نموذج). تقديم () باستخدام برنامج نصي jQuery تحميل من CDN. في هذه الحالة ، يرى المستعرض أنه في مكدس الاستدعاءات الذي أدى إلى حدوث حدث إرسال النموذج ، توجد وظيفة من برنامج نصي خارجي. لمنع هجمات
XSS /
CSRF ، يجعل المستعرض حقل المصدر فارغًا ، ويضيف وحدات بايت عشوائية لإنشاء الرمز المميز (الحالة
P9 ). نتيجة لذلك ، يصبح المستخدم في الصفحة الجديدة فجأة غير مصرح به ولا يمكنه إكمال العملية. هذا يمكن أن يكون مربكا للمطورين الذين اعتادوا على استخدام CDNs.
2.7 سيناريوهات البروتوكول
فيما يلي السيناريوهات الرئيسية المحتملة للمستخدم الذي يعمل مع الموقع ، والتي تؤثر على جميع المواقف المحتملة ومراحل تنفيذها (تسجيل الدخول المجهول ، "تذكرني" ، "نسيتني" ، والتحول إلى استخدام مفتاح دائم ، إذن وخروج ، تسجيل ومصادقة ثنائية العامل ، تصدير / استيراد المفتاح ، استبدال المفتاح ، إلخ.)
.htaccess.
<Directory "/var/www/html"> AuthType CSI AuthName "Restricted Content" AuthTokensFile /etc/apache2/.csi_keys Require valid-user </Directory>
cat /etc/apache2/.csi_keys
# # Client Self Identification tokens file # # CSI-Domain-Key UserName Role 84bc3da1b3e33a18e8d5e1bdd7a18d7a166d77ac1b46a1ec38aa35ab7e628ab5 MelnikovIN admin 6d7fce9fee471194aa8b5b6e47267f0348a24b70a0b376535542b996af517398 BoshirovAM user
2.7.1
K , «» T , . , : , . , vsphere.local, :
Sender = Recipient = Context = vsphere.local
() , :

, . 128 , CSI-Salt
* . , :

Hi – 128 ,
Lo – 128 .
, , - , .. .
* . « ».2.8
( )
Permanent
. , , . – . CSI-Token-Action: success CSI-Token-Action: abort.
Logout
, . «» , ( ), (« »).
, , . .
Change-To
T, – '.
: T' ( , ), ( 128 ).
* , .2.9 -
, - -, . , site.ru img.site.ru, download.site.ru, .
site.ru -, . , site.ru, , - . .
, .
site.ru :

, site.ru site.ru :
T
1 (.
R1 ,
R4 ,
RB ). site.ru.
site.ru, download.site.ru. (
R1 ,
R4 ):

download.site.ru , ajax- site.ru (
RB ,
RC ).
domain :

, , , A, B, C . - . , .
site.ru ajax- . ID != T
1 , site.ru. ID T
x . ID . ID .
. , , .. site.ru .
3
3.1
, , .
.
:
, - (
« » ), . , PIN-; .
- . : ?
, -, «», -, , , : « - ».
* ( ). , . 100% , . , , , .
, (.. ). ( ) , – . - .
: + ( API ). « ». .
, , . , , , . : .
( ). , , .
*, 32- 64- . .3.2
. , .
. . :
- , «» , , . , -, .
(), 8- , , .: ~!@#$%^&. : 26 + 26 + 10 + 8 = 70 . 8- 70 8 .
, , 10 12 . 70 8 / 10 12 = ~576 . أي ~10 . 5 . 10- 15 . 10 , 1-2 .
, . - , .
- , . أي ( SHA-2).
- , , , . .
3.3 /
-?, . ?
, . -, -, . .
, , ? , ( « »)? « » ?
, , ,
. , . , (email, mobile). , (, ). , , 100% , – .
-, -.
? , . , , bitcoin. , - . . . «», .
-?. - ( ) , , , - . , . javascript. . …
-?. . هادئ وهادئ. . . .
. , , , – . : , . , -.
. ( ). . IP- , , .
4
4.1
, , . -, . -, - – .
, , :
- ( , ).
- ( ) .
2 :
, . == .
, № 2. «» ( ), «», , . ,
.
№ 1. .
1 H
1 , 2, 1 – H
2 . , (H
1 , H
2 ) -.
3, 2, . 3 H
3 , 2, 3 – H
2' != H
2 (. ). , , .. .
, fingerprint . , .
: , . .
4.2 XSS
XSS – , victim.com . , CDN .
. - ( ), ( ), ( ).
– Source .
: XSS ( ), . «». -.
4.3 SRF
evil.com, . (GET/POST/HEAD/PUT/DELETE) , (, ). (, ). , Referer . , .
CSRF , . . , . GET- ( ) .
.
4.4 SSO
S
1 S
2 , , , SSO, . .. (- ), ( ), S
1 .
A, . S
2 , ( S
1 ) H
1 . . S
1 , S
2 .
S
2 .
<meta http-equiv="refresh" content="0">
.
S
2 A «»:
, . S
2 H
2 (.. 2.4 P1: ).
S
2 S
1 , H
1 H
2 , H
2 S
1 . S
1 S
2 , ..
.
, .. , .
: . S
2 , . , S
1 S
2 . .
4.5 SSO
, SSO, . .
.
.
, SSO, SSO. , . أي SSO – .
. .
- : Id- SSO . Id SSO . , .
(.
« » ).
. , , SSO, - , .
. , – . - Id- . , , , .
: ( ). . . , . , , , .
. SSO ( , ). SSO ( !).
SSO (, ), .
4.6
,
100% . ( ), . .
SSL . HTTPS . , HTTP. .
, . .
– . , . . - , .
, , , Javascript . Cookie HttpOnly. ajax- .
: , , ( ). cookie .
: , , ; ( , ).
4.7
. . : , «». - – .
, -, .
, . . , .
, -: - .
, , , , . .
, , , -, :

استنتاج
, , : « ?»
, ( ), (?) , .
, , - . , , , . ( , ). , « » «-».
- « ».
,
«». , . ( Google , Facebook – ). ( DDOS- . –
) - . , SSO , . ?
, , , . , - -. , ., . email, . . , . ?
-. ? SSO – .
, « ». . . . . , .
- «» . , « ». , .
-, ?
! للأسف. , «/».
1. , , popup
« cookie! , ! «», ».
popup . GDPR ( ).
. , cookie ! «». , .
, +1 .2. . SSO : OAuth, SAML, Kerberos .., , , ; - SSO, : « , ». . . , … , .
= .
.... . , - - . . . .
-, -, « » .
3. . . , . -, - . -.
?4. , . . .
5. . XSS, CSRF. - . — .
6. .
.7. ,
. , ,
, , , , , . SQL-.
, ,
. «» , - . . , «-» .
– ,
.
PS. Habr . , ()
. sergey201991[]. , . / . . -.
, , :
- , , ;
- ; , SSO
- «», - : - ( )
- -
. 1 — , : , 1000. .
. 2 — . . , . 80- , .
, !