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

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

سؤال

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

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

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

على أي حال، هل هناك أي توصيات قياسية للطول، والأحرف المسموح بها، وما إلى ذلك؟

لست متأكدا مما إذا كان الأمر يهم، لكنني سأكون باستخدام ASP.NET W / C #

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

المحلول

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

بعض مولدات كلمة السر قوية استخدم التجزئة، لذلك سأضع حد كبير للغاية على الطول (512 أو 1024) فقط لتكون شاملة. غالبا ما يؤدي مولدات كلمة المرور اليوم إلى سلاسل من 32 إلى 128 حرفا، لكن من يدري أن ما سيتم استخدام الخزانات في السنوات القليلة المقبلة.

نصائح أخرى

من المؤكد أن الأحرف غير ASCII تجعل الأمور أكثر صعوبة عندما يتعلق الأمر بإدخال كلمة المرور على الأجهزة المحدودة (الهواتف النقالة، والأجهزة لوحات المفاتيح وما إلى ذلك) - ولكن عادة غير مستحيل. يمكن القول إذا كان المستخدم يريد أن يفعل ذلك، يجب أن تدعهم. من السهل بما يكفي للقيام بشيء معقول ومتسق - ترميز في UTF-8 قبل التجزئة، على سبيل المثال. ستصبح فقط في الصعوبات إذا أرسلت بعض جهاز الإدخال الأحرف كتكوين (مثل لهجة E + الحادة بدلا من "E الحاد") - لكنني أظن أن ذلك لن يحدث في الحياة الحقيقية. (هل يمكن أن تتحلل كل شيء بنفسك، ولكن هذا سيكون الكثير من المتاعب للذهاب إلى حالة حافة.)

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

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

إجابة قصيرة: اسمح بقدر دعم النظام الذي يمكن أن يدعمه. في الوقت الحاضر ليس هناك أي عذر ليس استخدام دعم Unicode الكامل لإدخال النص، وهذا يتضمن كلمات المرور. لا أعتقد أنك بحاجة إلى القلق بشأن مشاكل الشخصيات طالما تم التعامل معها حرفيا (لكنني لست مؤيدا في هذا المجال - احذر من حقن SQL).

لدي pete peve ضد المواقع التي تفرض قيودا على كلمات المرور ... أي نوع من القيد. أحب المواقع التي ستخبرك عن مدى قوة كلمة المرور الخاصة بك والتوصية بجعلها أقوى، ولكن إجبار المستخدم على اكتب 8 أحرف على الأقل، أو أن تتطلب كل من الحروف والأرقام، إلخ.

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

في الأساس، يجب السماح لمعظم فئة Unicode من الشخصيات. قم بالتخطي مهما كانت تحكم الأحرف (على سبيل المثال 0-31 إلى جانب المساحة)، علامة ترتيب البايت (0xFFFE و OXFEFF). علاوة على ذلك، تريد أولا Canonicalization التمثيل للتخلص من المشاكل الناجمة عن تمثيلات مختلفة. قد تصدر تحذيرات رغم أن الشخصيات التي يبدو أنها من الصعب جدا الدخول، لكن المستخدمين سوف يحواضون ضد أنفسهم.

تذكر: عند تخزين كلمات المرور، يجب تشفير جميع كلمات المرور بخوارزمية أحادية الاتجاه مثل MD5 من SHA1. نظرا لأن هذه الخوارزميات تسفر دائما عن أرقام سداسية، لا داعي للقلق بشأن حقن SQL أو أي شيء من هذا القبيل.

لذلك، طالما يمكنك md5 أو sha1 حرفا، يجب قبوله.

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

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

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

(بالطبع، حتى لو سمحت بكل شيء، فلن يستخدم 99٪ من المستخدمين اسم حيوانهم الأليف ككلمة مرور لهم ...)

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

ملاحظة: قد تنظر أيضا في ترميز المشاكل في البريد الإلكتروني، إذا لم يكن ASCII القياسي (على سبيل المثال الأحرف اليابانية)، فمن الممكن أن لا يتلقى المستخدم البريد الإلكتروني بالتنسيق المناسب أو ببساطة لا يمكن قراءته على نظام آخر بسبب الخطوط لا يتم تثبيتها.

كل هذا يزن في نطاق أحرف ASCII "القابلة للطباعة".

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