سؤال

العمل على نظام تسجيل الدخول - النقطة التي يختار فيها العميل كلمة المرور الخاصة به للوصول إلى الموقع.

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

ومع ذلك، في حالة كلمة المرور، سأقوم بتجزئتها باستخدام SHA-512 المملح لإدخالها على أي حال، وهو ما يثير عددًا من الأسئلة:

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

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

  • هل هناك أي أحرف/سلاسل يجب رفضها - هل ستجتاز حماية ASP.NET الأصلية على أية حال؟

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

شكرا لمساعدتك.

يحرر:هذا تطبيق ويب ASP.NET يصل إلى قاعدة بيانات MSSQL2008 باستخدام ADO.NET (وليس LINQ/EF).

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

المحلول

لا يوجد سبب يدعو للقلق بشأن هجمات إدراج SQL إلا إذا كنت تقوم بالفعل بإدخال كلمة المرور في قاعدة البيانات بنص عادي (Danger، Will Robertson، Danger!) وحتى ذلك الحين إذا قمت بتحديد الاستعلام فلن تكون هناك مشكلة.يجب أن تسمح بـ [a-zA-Z0-9] بالإضافة إلى مجموعة من الأحرف الخاصة.ربما يكون الحرف الوحيد الذي يجب تقييده هو "<" والذي سيؤدي إلى تشغيل تحذير التحقق من صحة ASP.net.هناك عدد من الأدوات الممتعة المتوفرة للتحقق من تعقيد كلمة المرور من جانب العميل.انا يعجبني هذا.يوفر بعض التعليقات الفورية للمستخدم أثناء الكتابة.

نصائح أخرى

من وجهة نظر غير الإنجليزية - يجب ألا تكون هناك قيود على كلمة المرور.

على سبيل المثال، لماذا يقتصر استخدام المتحدث باللغة اليابانية على مجموعة أحرف US-ASCII؟ولماذا لا يستخدم المتحدث الفرنسي الحروف المحركة؟

نظرًا لاستمرار التجزئة بشكل صحيح، فلا يوجد سبب فني لتقييدها.

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

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

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