كيف يمكنني توطين التحقق من صحة كلمة المرور في C #؟

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

سؤال

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

Regex ValidHex =
   new Regex("[A-Za-z1234567890_-]+", RegexOptions.IgnoreCase);
if (!ValidHex.IsMatch(e.Text))
{
   e.Handled = true;
}
هل كانت مفيدة؟

المحلول

يمكنك أن تفعل مثل هذا لدعم أحرف Unicode:

[\p{L}\p{N}_-]+

كملاحظة جانبية: هل هناك أي سبب محدد تحتاج إلى الحد من الشخصيات المسموح بها؟

نصائح أخرى

لا تخزين كلمات المرور!

تجزئة كلمة المرور باستخدام تشفير تشنج وظيفة ومقارنة ذلك.

هذا التعبير المنتظم ليس فكرة جيدة بشكل خاص، فهو يقيد خيارات المستخدمين ولا يفرض أي شيء (كلمات المرور "A" و "AAAAAAA"). يشير الاسم إلى اعتماده من تعبير تم التحقق من صحة أرقام HEX. هل لديك على الأقل لإضافة حالة الطول الأدنى (في reg ex أو as e.text.length> 8).

سيقوم تعبير أكثر معقولا بالتحقق من صحة أن نموذج سحر واحد على الأقل تم استخدام العديد من المجموعات، لقد حفرت هذا: @"^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*\W)" انظر هناوبعد مرة أخرى، أضف فحص الطول الأدنى.

لا يعالج هذا المثال مشكلة التوطين، فإنه يسمح بالأحرف غير اللاتينية فقط من خلال "." ولا يعتبرهم متطلبات [AZ] أو [AZ].

هل حاولت استخدام W بدلا من A-ZA-Z؟ أراهن أنه سينتهي حول مشاكل الترجمة.

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