اندازهی قلم متن
تخمین مدت زمان مطالعهی مطلب:
دو دقیقه
هر ساله لیستی از پرکاربردترین کلمات عبور کاربران در دنیا، منتشر میشود که یک نمونه از آنرا در اینجا میتوان مشاهده کرد:
«Splashdata، توسعه دهنده نرم افزارهای امنیتی، فهرست سالانه خود را از رایجترین رمزهای عبور منتشر کرده است.»
میشود از این لیست برای بهبود پروسه ثبت نام در یک سایت استفاده کرد و همان زمان که کاربر کلمه عبور ضعیفی را وارد کرده است، به او پیغام داد که «کلمه عبور وارد شده را راحت میتوان حدس زد!»
متد الحاقی IsSafePasword فوق بررسی میکند که آیا کلمه عبور انتخابی:
- خالی نیست.
- بیشتر از 5 کاراکتر طول دارد.
- تمام حروف بکارگرفته شده در آن یکسان نیستند.
و در ASP.NET MVC با استفاده از قابلیت Remote validation آن استفاده از این متد به نحو زیر خواهد بود:
ابتدا یک اکشن متد به کنترلر ثبت نام در سایت به نحو فوق اضافه خواهد شد.
سپس قسمتی از ViewModel متناظر با صفحه ثبت نام سایت، به شکل زیر اضافه و تعریف میگردد:
«Splashdata، توسعه دهنده نرم افزارهای امنیتی، فهرست سالانه خود را از رایجترین رمزهای عبور منتشر کرده است.»
میشود از این لیست برای بهبود پروسه ثبت نام در یک سایت استفاده کرد و همان زمان که کاربر کلمه عبور ضعیفی را وارد کرده است، به او پیغام داد که «کلمه عبور وارد شده را راحت میتوان حدس زد!»
using System.Linq; namespace SecurityModule { public static class SafePassword { public static ISet<string> BadPasswords = new HashSet<string> { "password", "password1", "123456", "12345678", "1234", "qwerty", "12345", "dragon", "******", "baseball", "football", "letmein", "monkey", "696969", "abc123", "mustang", "michael", "shadow", "master", "jennifer", "111111", "2000", "jordan", "superman", "harley", "1234567", "iloveyou", "trustno1", "sunshine", "123123", "welcome" }; public static bool IsSafePasword(this string data) { if (string.IsNullOrWhiteSpace(data)) return false; if (data.Length < 5) return false; if (BadPasswords.Contains(data.ToLowerInvariant())) return false; if (data.AreAllCharsEuqal()) return false; return true; } public static bool AreAllCharsEuqal(this string data) { if (string.IsNullOrWhiteSpace(data)) return false; data = data.ToLowerInvariant(); var firstElement = data.ElementAt(0); var euqalCharsLen = data.ToCharArray().Count(x => x == firstElement); if (euqalCharsLen == data.Length) return true; return false; } } }
- خالی نیست.
- بیشتر از 5 کاراکتر طول دارد.
- تمام حروف بکارگرفته شده در آن یکسان نیستند.
و در ASP.NET MVC با استفاده از قابلیت Remote validation آن استفاده از این متد به نحو زیر خواهد بود:
public partial class RegisterController : Controller { //... [HttpPost] [OutputCache(Location = OutputCacheLocation.None, NoStore = true)] public virtual ActionResult CheckPassword(string password1) { return Json(password1.IsSafePasword()); } }
سپس قسمتی از ViewModel متناظر با صفحه ثبت نام سایت، به شکل زیر اضافه و تعریف میگردد:
using System.ComponentModel.DataAnnotations; using System.Web.Mvc; namespace MyBlog.Models { public class RegisterViewModel { //... [Display(Name = "کلمه عبور")] [Required(ErrorMessage = "لطفا کلمه عبور خود را وارد نمائید")] [DataType(DataType.Password)] [StringLength(50, MinimumLength = 5, ErrorMessage = "حداقل طول کلمه عبور 5 حرف است")] [Remote(action: "CheckPassword", controller: "Register", HttpMethod = "POST", ErrorMessage = "کلمه عبور وارد شده را راحت میتوان حدس زد!")] public string Password1 { get; set; } } }