کمک به مرورگر، در جهت تمایز بین صفحات ورود و ثبت نام
مرورگرهای جدید قادرند برای صفحهی لاگین، پر کردن خودکار فیلدهای نام کاربری و کلمهی عبور و برای صفحهی ثبت نام، تولید خودکار کلمات عبور قوی، به همراه بهخاطر سپاری آنرا ارائه دهند. برای فعال سازی یک چنین قابلیتهای ویژهای، نیاز است تا یک سری ویژگی را به فیلدهای ورود کلمات عبور اضافه کرد:
الف) نیاز است autocomplete را به نحو صحیحی مقدار دهی کرد:
- اگر مقدار آن مساوی new-password درنظر گرفته شود، یعنی صفحهی جاری، صفحهی ثبت نام است و نیاز است تا تولید کنندهی خودکار کلمات عبور مرورگر و بخاطر سپاری آن فعال شوند.
- اگر مقدار آن مساوی current-password درنظر گرفته شود، یعنی صفحهی جاری، صفحهی لاگین است و کاربر نیاز دارد تا کلمهی عبوری را که پیشتر در حین ثبت نام و یا حتی لاگین موفق قبلی وارد کردهاست، بتواند به سادگی از طریق password manager مرورگر دریافت کند.
ب) بنابراین تا اینجا روش تمایز بین فیلدهای پسورد صفحات لاگین و ثبت نام مشخص شد. اما در مورد نام کاربری چطور؟
برای این حالت فقط کافی است مقدار autocomplete را به username تنظیم کرد تا مرورگر بداند که چگونه باید اطلاعات password manager خودش را به صورت خودکار تامین کند. البته "autocomplete="username در اصل برای معرفی ایمیلها طراحی شدهاست، اما در استفادههای برنامههای کاربردی ما، جهت معرفی مقدار نام کاربری که کاربر قرار است توسط آن به برنامه وارد شود، کفایت میکند.
سفارشی سازی تولید کنندهی خودکار کلمات عبور مرورگر
عنوان شد که اگر مقدار autocomplete در صفحات ثبت نام، به مقدار new-password تنظیم شود، یک چنین فیلد ورودی به صورت خودکار به همراه قابلیت ویژهی «تولید کنندهی خودکار کلمات عبور مرورگر» نیز خواهد بود. میتوان این ابزار توکار مرورگرها را نیز سفارشی سازی کرد و بر روی نحوهی تولید کلمات عبور آن تاثیر گذاشت:
<input type="password" autocomplete="new-password" passwordrules="required: upper; required: lower; required: digit; minlength: 25; allowed: [-().&@?'#,/"+]; max-consecutive: 2">
- کلمهی عبور تولیدی توسط مرورگر باید حداقل به همراه یک عدد، یک حرف بزرگ و یک حرف کوچک باشد.
- حداقل 25 حرف باشد.
- استفادهی از حروف ویژهی -().&@?'#,/"+ در آن مجاز است.
- حداکثر تعداد حروف مشابه متوالی آن باید 2 حرف باشد.
نیاز به خاموش کردن تصحیحهای هوشمند مرورگرها
مرورگرها میتوانند برای مثال حروف ابتدای عبارت وارد شده را به صورت خودکار تبدیل به کلمات بزرگ کنند و یا حتی با استفاده از واژه نامهها، اطلاعات ورودی را تصحیح کنند. یک چنین قابلیتی نباید برای فلیدهای کلمات عبور فعال باشد. به همین جهت ضروری است این فلیدها با ویژگیهای "autocapitalize="off و "autocorrect="off مزین شوند.
کمک به مرورگرها در جهت تعویض کلمات عبور ضعیف و فاش شده!
برای نمونه مرورگر کروم به همراه قسمتی است که بر اساس password manager توکار خودش و اطلاعات فاش شدهی بر روی اینترنت، عنوان میکند که کدامیک از کلمات عبور شما دیگر امن نیستند و بهتر است آنها را عوض کنید. این صفحه را میتوانید در آدرس ویژهی chrome://settings/passwords مرورگر کروم مشاهده کنید.
نکتهی مهم اینجا است که این مرورگر، دکمهی Change password و لینکی را نیز به سایت و برنامهی مدنظر، برای تعویض کلمهی عبور ارائه میدهد و این لینک، قالب ثابت و ویژهای دارد: https://example.com/.well-known/change-password
یعنی هموار کاربر را به آدرس ثابت well-known/change-password. در سایت شما هدایت میکند و در این حالت بهتر است یک route ویژهی خاص آنرا تعریف کرده و کاربر را به صورت خودکار به صفحهی اصلی تعویض کلمهی عبور، برای مثال به آدرس فرضی https://example.com/settings/change-password به صورت خودکار هدایت کنید.
یک نمونه مثال این هدایت خودکار در یک برنامهی ASP.NET Core به صورت زیر است:
app.UseEndpoints(endpoints => { // TODO: Add it to your app! // Improves chrome://settings/passwords page by managing `Change password` button next to a password. endpoints.MapGet("/.well-known/change-password", context => { // `/.well-known/change-password` address will be called by the `Change password` button of the Chrome. // Now our Web-API app redirects the user to the `/change-password` address of the App. context.Response.Redirect("/change-password", true); return Task.CompletedTask; }); endpoints.MapRazorPages(); // ... });