ما هي أفضل طريقة لإرسال بيانات مصادقة نموذج الويب عبر HTTP؟

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

  •  23-08-2019
  •  | 
  •  

سؤال

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

في الوقت الحالي، يقومون بإرسال مصادقة اسم المستخدم / كلمة المرور في نماذج النشر عبر HTTP، وبالتالي، يتم إرسالها إلى صديق.

أبسط حل المشكلة هو ببساطة مطالبة HTTPS لتسجيل الدخول عبر جميع تطبيقاتنا، أليس كذلك؟

حسنا، هناك بعض النقاش الداخلي حولها بدلا من ذلك، قم ببناء نوع من تشفير من جانب العميل ل Roll-Mours من كلمات المرور (كلمة المرور + الملح، إلخ).

هل هناك حل قابل للقبول HTTP فقط؟

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

لقد وجدت توصيات Owasp:http://www.owasp.org/index.php/top_10_2007-A7# Proprotection.

وكذلك مايكروسوفت:http://msdn.microsoft.com/en-us/library/aa302420.aspx.

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

أيضا، تم ذكر HTTP DIGEST. يبدو لطيفا، لكن Digest هو فقط مصادقة HTTP، وليس للبيانات المرسلة عبر النشر.

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

المحلول

+1 إلى إجابة مهرداد. وبعد المضي قدما مع التشفير في المنزل هو محفوف بالمخاطر.

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

يحل TLS / SSL مشكلة عدم تبادل المفاتيح الآمن فقط، ولكن أيضا من نقل البيانات الآمنة.

يحمي TLS / SSL معلوماتك الحساسة من خلال استخدام تشفير مفتاح Assymmetric لتبادل المفتاح المتماثل المستخدم لتشفير المعلومات ذهابا وإيابا، بمجرد إنشاء جلسة TLS / SSL. يتم إنشاء المفتاح المتماثل في وقت التشغيل، وهو سر مشترك بين العميل والخادم؛ هذا هو المفتاح المستخدم لتشفير جميع حركة المرور الأخرى بمجرد أن تكون الجلسة جاهزة لنقل البيانات.

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

إذا قمت بتصفح حل التشفير الخاص بك، فيجب عليك تبادل المفتاح المتماثل، بطريقة آمنة. أسهل طريقة للقيام بذلك هي استخدام TLS / SSL؛ الطريقة الأكثر صعوبة هي تنفيذ محلول تشفير التبادل الرئيسي للأحياء.

نصائح أخرى

أنا للغاية يوصي ضد. الذهاب مع الحل الخاص بك (في البيئات الحساسة الأمنية). الذهاب مع SSL. إنها تكنولوجيا مثبتة ومن السهل التنفيذ.

يمكن أن يكون المتداول حلول الأمن الخاصة بك خطيرا وحتى إذا تم تطبيقه بشكل صحيح (0.000001٪)، فهذا إرادة أن تكون مكلفة.

إذا كانت البيانات نفسها ليست حساسة للغاية، ولكن كلمات المرور هي، أود أن أقترح باستخدام مصادقة HTTP Digest. (وهو وحش مختلف تماما من المصادقة الأساسية HTTP). إنه آمن تماما على HTTP المستقيم، وليس من الصعب على الإطلاق التنفيذ على الخادم. لا يتم إرسال أي شيء فوق السلك الذي يمكن أن يكشف عن كلمة المرور، ما عليك سوى المعلومات التي تتيح للعميل إظهار الخادم الذي لديهم كلمة المرور الصحيحة.

إذا كنت تريد شرحا جيدا لكيفية تنفيذ مصادقة HTTP Digest في طلبك، بول جيمس لديه مقال ممتاز عليه.

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

يمكنك تخزين كلمات المرور بشكل آمن عن طريق تخزين علامة تجزئة A1.

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

تحديث: لا يمكنك تأمين البيانات عبر المنشور إلا إذا كنت إما (أ) قم بالتشفير في JavaScript على العميل أو، (ب) افعل كل شيء على SSL.

أنت يمكن, ، مع القليل من السحر، استخدم مصادقة HTTP مع النماذج. يسمى المقالة التي ارتبطها أعلاه "مصادقة HTTP مع نماذج HTML"، بعد كل شيء. ولكن لن يتم ذلك على المنصب.

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

إذا كنت تريد تجنب CSRF، أوصي باستخدام فورق, على الرغم من أن الفكرة تذهب من قبل العديد من الأسماء المختلفة، التقطت هذا الاسم من القرصنة Slashcode لاستخدامي الخاص بضع سنوات، وهو المكان الذي جئت إليه أولا.

ستنفق المزيد من الوقت والمال المتداول محلولك الخاص وعدم تأكيده أنه أمر آمن. SSL الصناعة القياسية سهلة التنفيذ وأكثر أمانا بعيدا عن المربع مما يمكنك تحمل حل الحل الخاص بك.

الوقت == المال

شراء شهادة وقضاء وقتك في العمل على طلبك بدلا من نموذج تسجيل دخول آمن.

تشفير الجانب العميل هو عاجز أمام معظم هجمات MITM. يمكن للمهاجم ببساطة إزالة البرنامج النصي الخاص بك.

سوف يحمي فقط من الانشقاق السلبي. إذا كان هذا جيدا بما يكفي بالنسبة لك، يمكنك استخدام:

  • يتم تنفيذ التجزئة في جافا سكريبت. من السهل تنفيذ التحدي استجابة لتسجيل الدخول الأولي، ولكن لا تنس أن ملف تعريف الارتباط في جلسة المهاجمة جيدة تقريبا مثل كلمة المرور (عليك تحديد تسجيل الدخول إلى IP واحد و / أو استخدام البرنامج النصي لإنشاء ملف تعريف ارتباط لمرة واحدة لمرة واحدة كل طلب، الذي أتصوره سيكون حلا صعبا وهشا).
  • مصادقة HTTP Digest. أكثر أمانا، حيث يمكن استخدام التجزأ لمرة واحدة ومصادقة متبادلة، وما إلى ذلك، ولكن UI القياسي مثير للاشمئزاز للغاية.

... مجرد استخدام SSL.

ستكون حلول HTTP فقط عرضة لهجمات الإنسان في الوسط.

تعديل: ستكون تتبع الشبكة طريقة سهلة لإثبات أن HTTP غير آمن.

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

حسنا، هناك بعض النقاش الداخلي حولها بدلا من ذلك، قم ببناء نوع من تشفير من جانب العميل ل Roll-Mours من كلمات المرور (كلمة المرور + الملح، إلخ).

أول شيء نحتاج إليه هو البيانات في العبور مقابل البيانات في الراحة. من OP، يبدو أن القلق الكبير هو اسم المستخدم / كلمة المرور في الوضوح عبر الإنترنت. لذلك، أنت حقا تهتم بالبيانات في العبور. HTTPS عبر SSL هي طريقة تم اختبارها للقيام بذلك (وهو حل سهل للغاية!). الآن، إذا كنت ترغب حقا في لفة خاصة بك للبيانات في الراحة (في DB، على خادم الملفات، وما إلى ذلك)، فهذا هو وحش مختلف، ولكن الأساليب الحالية لتشفير البيانات ستكون أفضل من لفة الخاصة بك وبعد

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

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

نحن فقط نضع تطبيق ويب / جوال للقيام ببعض هذه الأشياء. يقوم بإنشاء عناوين URL عشوائية لتسجيلات تسجيل الدخول، باستخدام HTTPS وطريقة تشفير HTTPS / AES لتخزين قاعدة البيانات. هناك API json بسيطة لاستخدامها دون واجهة المستخدم لدينا، هيريس تطل لدينا، وإعطائها نظرة .. http://blog.primestudiosllc.com/security/send-time-limited-secure-logins-with-timebomb-it.

ذكرت القيام بالتشفير الخاص بك بالإضافة إلى الملح ... أقترح باستخدام جافا سكريبت MD5. (يستخدم أيضا Yahoo على صفحات غير SSL الخاصة بهم، وكذلك يدعي) ...

وكنت مزدوجة التجزئة كلمة المرور ... قد يجادل البعض بأن التجزئة المزدوجة ستجعلها عرضة لهجمات الاصطدام. يجب أن أختلف لأن الناس قد تمكنوا من القيام بتصادمات توقيع MD5 الآن فقط على الملفات، حيث كمية كبيرة من البيانات هي MD5 ...

إذا كان موقع مؤسس كبير (وهناك ستكون هناك أسباب لكسر) لا يوجد عذر غير مستخدم SSL.

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