سؤال

أريد أن تنفيذ استعادة كلمة المرور في تطبيق ويب.

أود أن تجنب استخدام الأسئلة السرية.

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

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

هل يمكنني إرسال رابط عن طريق البريد الإلكتروني على سبيل المثال http://example.com/token=xxxx حيث xxxx هو عشوائي رمزية ترتبط مع المستخدم.لذلك عندما يتنقل المستخدم إلى عنوان url هذا انه/انها يمكن إعادة تعيين كلمة المرور.

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

المحلول

أولا ، افعل ليس قم بتخزين نسخة نصية عادي من كلمة مرور المستخدم ، أو حتى إصدار مشفر. تريد فقط الاحتفاظ hassed نسخة من كلمة مرور المستخدم.

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

نصائح أخرى

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

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

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

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

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

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

u003C/rant>

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

ومع ذلك ، ما أنت لا ينبغي أن تفعل:

  • أرسل كلمة المرور - لأنه بعد كل شيء ، كما ذكرنا بالفعل ، لم يكن لديك.

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

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

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

من الواضح أنه لا يمكنك إرسال كلمة المرور الأصلية عبر البريد الإلكتروني ، لأنك لا تخزنها (أليس كذلك؟!). إرسال كلمة مرور مؤقتة (يجب تغييرها ، لأنها تعمل فقط لتسجيل الدخول واحد) ، ورابط لإعادة تعيين كلمة المرور مكافئة من وجهة نظر أمان.

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

1) ينقر المستخدم على زر "لقد نسيت كلمة المرور الخاصة بي" ويتم إرسال كلمة المرور الجديدة إلى المستخدم.

2) ينقر المستخدم على زر "لقد نسيت كلمة المرور الخاصة بي" ، ثم يتعين عليه الإجابة على سؤال الأمان قبل إرسال كلمة المرور الجديدة بالبريد الإلكتروني إلى العنوان في الملف.

يبدو لي أن الخيار رقم 2 أكثر أمانًا.

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

أنا أتفق مع آندي. ألا تكون أسئلة الأمان مستقلة عادة عن كلمة المرور؟ (منجم) بمعنى أن لديهم سؤالًا وإجابة وغير مرتبطة بكلمة المرور. يبدو أن هذا يستخدم لمنع طلبات إعادة تعيين كلمة المرور الزائفة ولديها في الواقع استخدام.

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

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

هذا ورقة بيضاء على ذلك:http://appsecnotes.blogspot.com/2010/09/latest-forgot-password-best-practices.html

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

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

الأسئلة والأجوبة "السرية" هي مجرد شكل آخر من أشكال اسم المستخدم وكلمات المرور مع العيب المميت ، عادة ما يكون من السهل للغاية تخمينه ، جيد جدًا لدرجة أنك لا تريد استخدامها.

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

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

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

إليكم كيف قمت بحلها:

أضفت retrieve_token و retrieve_expiration الحقول إلى جدول المستخدمين.

يطلب المستخدم إعادة تعيين كلمة المرور من خلال توفير بريده الإلكتروني وملء Captcha. يتم إنشاء قيمة تجزئة عشوائية لهم retrieve_token الحقل - أي md5($user_id.time()), ، في حين retrieve_expiration سيتم ضبطها على وقت DateTime الذي ينتهي في 45 دقيقة القادمة. يتم إرسال البريد الإلكتروني إلى المستخدم برابط:

https://example.com/reset-password?retrieve_token=912ec803b2ce49e4a541068d495ab570

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

يمكنك تنفيذ سؤال الأمان لطلب إعادة تعيين كلمة المرور ، لكنني أشعر أن Captcha سيكون كافياً لتثبيط أي شخص عن تكرار الطلب عدة مرات.

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

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

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

@جاي.الاستخدام السليم الأمن الأسئلة إلى الشروع في إعادة تعيين كلمة المرور البريد الإلكتروني ، ليس في الواقع إعادة تعيين كلمة المرور.دون وجود آلية مثل سؤال الأمان ، يمكن الشروع في إعادة تعيين كلمة المرور.Althought على ما يبدو beign, إرسال البريد الإلكتروني لإعادة تعيين يمكن إرسالها إلى البريد الإلكتروني الذي ربما لم تعد تنتمي إلى المالك الأصلي.هذه ليست نادرة.على سبيل المثال, عندما ترك الموظفين للشركة ، وغالبا ما تكون تلك الرسائل يتم إرسالها إلى موظف آخر.سؤال الأمان ، يضيف مستوى منخفض من obfucation إلى هذا السيناريو.كما أنه يقلل من القضايا حيث شخص واحد يبقي الشروع في إعادة تعيين كلمة المرور على حساب خاطئ مما تسبب في بعض المسكين للحصول على قصد المتطفلة.سؤال الأمان حقا ليس من المفترض أن يكون حقا آمنة ، هم فقط من المفترض أن تقلل من السيناريوهات مثل تلك.أي شخص باستخدام سؤال الأمان في الواقع إعادة تعيين كلمة المرور أفعل ذلك الخطأ.

بخصوص سؤال الأمن/الإجابة. كمستخدم لمواقع الويب ، لا أستخدمها شخصيًا (أدخل القمامة فيها). لكنها بالتأكيد ليست عديمة الفائدة أو لا معنى لها كما يقول البعض هنا.

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

إليك مثال على كيفية قيام شخص ما باستخدام Node.js ، وينشئ بشكل أساسي رمزًا عشوائيًا ، ووقت انتهاء الصلاحية ، وإرسال الرابط مع الرمز المميز ، واحصل على أ reset/:token المسار الذي يضمن وجود المستخدم مع هذا الرمز المميز (الذي لا ينتهي صلاحيته أيضًا) ، وإذا كان الأمر كذلك ، فقم بإعادة توجيه صفحة كلمة المرور إعادة تعيين.

http://sahatyalkabov.com/how-to-implement-password-reset-in-nodejs/

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