Giúp người dùng dễ dàng thay đổi mật khẩu bằng cách thêm một URL phổ biến để đổi mật khẩu

Chuyển hướng yêu cầu đến /.well-known/change-password đến URL change-passwords

Thiết lập lệnh chuyển hướng từ /.well-known/change-password đến trang thay đổi mật khẩu của trang web. Điều này sẽ cho phép trình quản lý mật khẩu chuyển hướng người dùng trực tiếp đến trang đó.

Giới thiệu

Như bạn có thể biết, mật khẩu không phải là cách tốt nhất để quản lý tài khoản. May mắn thay, có những công nghệ mới nổi như WebAuthn và các kỹ thuật như mật khẩu một lần đang giúp chúng ta tiến gần hơn đến một thế giới không có mật khẩu. Tuy nhiên, các công nghệ này vẫn đang được phát triển và mọi thứ sẽ không thay đổi nhanh chóng. Ít nhất trong vài năm tới, nhiều nhà phát triển vẫn cần phải xử lý mật khẩu. Trong khi chờ các công nghệ và kỹ thuật mới trở nên phổ biến, ít nhất chúng ta có thể làm cho mật khẩu dễ sử dụng hơn.

Một cách hay để làm điều này là hỗ trợ tốt hơn cho trình quản lý mật khẩu.

Lợi ích của trình quản lý mật khẩu

Trình quản lý mật khẩu có thể được tích hợp vào trình duyệt hoặc được cung cấp dưới dạng ứng dụng bên thứ ba. Các bot có thể giúp người dùng theo nhiều cách:

Tự động điền mật khẩu cho trường nhập chính xác: Một số trình duyệt có thể tìm thấy trường nhập chính xác theo phương pháp thử nghiệm ngay cả khi trang web không được tối ưu hoá cho mục đích này. Nhà phát triển web có thể giúp trình quản lý mật khẩu bằng cách chú thích chính xác các thẻ nhập HTML.

Ngăn chặn hành vi lừa đảo: Vì trình quản lý mật khẩu ghi nhớ nơi ghi lại mật khẩu, nên mật khẩu chỉ có thể được tự động điền ở các URL thích hợp chứ không phải ở các trang web lừa đảo.

Tạo mật khẩu mạnh và duy nhất: Vì mật khẩu mạnh và duy nhất được trình quản lý mật khẩu trực tiếp tạo và lưu trữ, nên người dùng không cần phải nhớ một ký tự nào trong mật khẩu.

Việc tạo và tự động điền mật khẩu bằng trình quản lý mật khẩu đã phục vụ tốt cho web, nhưng khi xem xét vòng đời của mật khẩu, việc cập nhật mật khẩu bất cứ khi nào cần thiết cũng quan trọng như việc tạo và tự động điền. Để tận dụng đúng cách, trình quản lý mật khẩu sẽ thêm một tính năng mới:

Phát hiện mật khẩu dễ bị xâm nhập và đề xuất cập nhật mật khẩu: Trình quản lý mật khẩu có thể phát hiện mật khẩu được sử dụng lại, phân tích độ hỗn loạn và độ yếu của mật khẩu, thậm chí phát hiện mật khẩu có khả năng bị rò rỉ hoặc mật khẩu được biết là không an toàn từ các nguồn như Have I Been Pwned.

Trình quản lý mật khẩu có thể cảnh báo người dùng về mật khẩu có vấn đề, nhưng sẽ có nhiều phiền toái khi yêu cầu người dùng chuyển từ trang chủ sang trang thay đổi mật khẩu, ngoài việc trải qua quy trình thực tế để thay đổi mật khẩu (quy trình này còn tuỳ thuộc vào từng trang web). Sẽ dễ dàng hơn nhiều nếu trình quản lý mật khẩu có thể chuyển hướng người dùng trực tiếp đến URL thay đổi mật khẩu. Đây là lúc một URL phổ biến để thay đổi mật khẩu trở nên hữu ích.

Bằng cách đặt trước một đường dẫn URL phổ biến chuyển hướng người dùng đến trang thay đổi mật khẩu, trang web có thể dễ dàng chuyển hướng người dùng đến đúng nơi để thay đổi mật khẩu.

Thiết lập "một URL phổ biến để thay đổi mật khẩu"

.well-known/change-password được đề xuất là URL phổ biến để thay đổi mật khẩu. Tất cả những gì bạn cần làm là định cấu hình máy chủ để chuyển hướng các yêu cầu về .well-known/change-password đến URL thay đổi mật khẩu của trang web.

Ví dụ: giả sử trang web của bạn là https://example.com và URL thay đổi mật khẩu là https://example.com/settings/password. Bạn chỉ cần thiết lập máy chủ để chuyển hướng yêu cầu https://example.com/.well-known/change-password đến https://example.com/settings/password. Vậy là xong. Đối với lệnh chuyển hướng, hãy sử dụng mã trạng thái HTTP 302 Found, 303 See Other hoặc 307 Temporary Redirect.

Ngoài ra, bạn có thể phân phát HTML tại URL .well-known/change-password bằng thẻ <meta> thông qua http-equiv="refresh".

<meta http-equiv="refresh" content="0;url=https://example.com/settings/password">

Xem lại HTML của trang thay đổi mật khẩu

Mục tiêu của tính năng này là giúp vòng đời mật khẩu của người dùng trở nên linh hoạt hơn. Bạn có thể làm hai việc để giúp người dùng cập nhật mật khẩu mà không gặp trở ngại:

  • Nếu biểu mẫu thay đổi mật khẩu cần mật khẩu hiện tại, hãy thêm autocomplete="current-password" vào thẻ <input> để trình quản lý mật khẩu tự động điền mật khẩu đó.
  • Đối với trường mật khẩu mới (trong nhiều trường hợp, đó là hai trường để đảm bảo rằng người dùng đã nhập chính xác mật khẩu mới), hãy thêm autocomplete="new-password" vào thẻ <input> để giúp trình quản lý mật khẩu đề xuất mật khẩu đã tạo.

Tìm hiểu thêm tại bài viết Các phương pháp hay nhất về biểu mẫu đăng nhập.

Cách sử dụng trong thế giới thực

Ví dụ

Nhờ cách triển khai của Apple Safari, /.well-known/change-password đã có trên một số trang web lớn trong một thời gian:

Hãy tự thử và làm tương tự cho ứng dụng của bạn!

Khả năng tương thích với trình duyệt

Safari đã hỗ trợ URL phổ biến để thay đổi mật khẩu kể từ năm 2019. Trình quản lý mật khẩu của Chrome bắt đầu hỗ trợ tính năng này từ phiên bản 86 trở đi (dự kiến phát hành phiên bản ổn định vào cuối tháng 10 năm 2020) và các trình duyệt khác dựa trên Chromium cũng có thể hỗ trợ tính năng này. Firefox cho rằng việc triển khai tính năng này là đáng giá, nhưng chưa có dấu hiệu cho thấy họ có kế hoạch triển khai tính năng này kể từ tháng 8 năm 2020.

Hành vi của trình quản lý mật khẩu của Chrome

Hãy xem cách trình quản lý mật khẩu của Chrome xử lý các mật khẩu dễ bị xâm nhập.

Trình quản lý mật khẩu của Chrome có thể kiểm tra xem mật khẩu của bạn có bị rò rỉ hay không. Bằng cách chuyển đến about://settings/passwords, người dùng có thể chạy tính năng Kiểm tra mật khẩu dựa trên các mật khẩu đã lưu trữ và xem danh sách mật khẩu nên cập nhật.

Hàm Kiểm tra mật khẩu của Chrome

Khi bạn nhấp vào nút Thay đổi mật khẩu bên cạnh mật khẩu bạn nên cập nhật, trình duyệt sẽ:

  • Mở trang thay đổi mật khẩu của trang web nếu bạn thiết lập /.well-known/change-password đúng cách.
  • Mở trang chủ của trang web nếu bạn chưa thiết lập /.well-known/change-password và Google không biết đến trang dự phòng.
Điều gì sẽ xảy ra nếu máy chủ trả về 200 OK ngay cả khi /.well-known/change-password không tồn tại?

Trình quản lý mật khẩu cố gắng xác định xem một trang web có hỗ trợ URL phổ biến để thay đổi mật khẩu hay không bằng cách gửi yêu cầu đến /.well-known/change-password trước khi chuyển tiếp người dùng đến URL này. Nếu yêu cầu trả về 404 Not Found, thì rõ ràng là URL không hoạt động, nhưng phản hồi 200 OK không nhất thiết có nghĩa là URL đó hoạt động, vì có một số trường hợp đặc biệt:

  • Trang web kết xuất phía máy chủ sẽ hiển thị thông báo "Không tìm thấy" khi không có nội dung nhưng có 200 OK.
  • Trang web hiển thị phía máy chủ phản hồi bằng 200 OK khi không có nội dung sau khi chuyển hướng đến trang "Không tìm thấy".
  • Ứng dụng một trang phản hồi bằng shell với 200 OK và hiển thị trang "Không tìm thấy" ở phía máy khách khi không có nội dung.

Đối với những trường hợp hiếm gặp này, người dùng sẽ được chuyển hướng đến trang "Không tìm thấy" và điều đó sẽ gây nhầm lẫn.

Đó là lý do tại sao có cơ chế đề xuất tiêu chuẩn để xác định xem máy chủ có được định cấu hình để phản hồi bằng 404 Not Found khi thực sự không có nội dung hay không, bằng cách yêu cầu một trang ngẫu nhiên. Trên thực tế, URL này cũng được đặt trước: /.well-known/resource-that-should-not-exist-whose-status-code-should-not-be-200. Ví dụ: Chrome sử dụng đường dẫn URL này để xác định xem có thể dự kiến trước một URL thay đổi mật khẩu thích hợp từ /.well-known/change-password hay không.

Khi bạn triển khai /.well-known/change-password, hãy đảm bảo rằng máy chủ của bạn trả về 404 Not Found cho mọi nội dung không tồn tại.

Phản hồi

Nếu bạn có ý kiến phản hồi về bản đặc tả, vui lòng gửi vấn đề đến kho lưu trữ bản đặc tả.

Tài nguyên

Ảnh chụp của Matthew Brodeur trên Unsplash