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 thay đổi mật khẩu

Thiết lập một lệnh chuyển hướng từ /.well-known/change-password đến trang thay đổi mật khẩu trên trang web của bạn. Điều này sẽ cho phép trình quản lý mật khẩu chuyển 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 dùng 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ần mật khẩu. Tuy nhiên, những 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. Nhiều nhà phát triển vẫn sẽ phải xử lý mật khẩu trong ít nhất vài năm tới. Trong khi chờ đợi các công nghệ và kỹ thuật mới nổi trở nên phổ biến, ít nhất chúng ta có thể giúp mật khẩu dễ sử dụng hơn.

Một cách hiệu quả để làm việc này là cung cấp dịch vụ hỗ trợ tốt hơn cho trình quản lý mật khẩu.

Cách trình quản lý mật khẩu giúp bạn

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 tiện ích này 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 liệu chính xác: Một số trình duyệt có thể tìm thấy trường nhập liệu chính xác theo kinh 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 đúng cách các thẻ đầu vào 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 mật khẩu được ghi lại, nên mật khẩu chỉ có thể được điền sẵn tại các URL thích hợp chứ không phải tạ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 tạo và lưu trữ trực tiếp, nên người dùng không cần phải nhớ một ký tự nào của 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 xét đến 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, các trình quản lý mật khẩu đang bổ sung 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 trùng lặp, phân tích độ phức tạp và điểm 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 có rất nhiều khó khăn khi yêu cầu người dùng chuyển từ trang chủ đến 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 khác nhau tuỳ theo 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à nơi URL quen thuộc để 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 quen thuộc để 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 vị trí để thay đổi mật khẩu.

Thiết lập "URL quen thuộc để thay đổi mật khẩu"

.well-known/change-password được đề xuất là một 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 cho .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 cho 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> bằng cách sử dụng 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 diễn ra suôn sẻ hơn. Bạn có thể làm hai việc để cho phé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ủa bạn cần mật khẩu hiện tại, hãy thêm autocomplete="current-password" vào thẻ <input> để giúp 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, đây là 2 trường để đảm bảo người dùng đã nhập mật khẩu mới một cách chính xác), 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 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ực tế

Ví dụ

Nhờ việc triển khai /.well-known/change-password của Apple Safari, tính năng này đã có trên một số trang web lớn trong một thời gian:

Hãy tự mình thử và làm tương tự cho các video của bạn!

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

Một URL phổ biến để thay đổi mật khẩu đã được Safari hỗ trợ 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 là đáng giá, nhưng chưa cho biết kế hoạch triển khai tính đến 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 trình quản lý mật khẩu của Chrome xử lý mật khẩu dễ bị xâm phạm như thế nào.

Trình quản lý mật khẩu của Chrome có thể kiểm tra mật khẩu bị rò rỉ. 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 mật khẩu đã lưu trữ và xem danh sách mật khẩu nên cập nhật.

Chức năng 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 mà bạn nên cập nhật, trình duyệt sẽ:

  • Mở trang đổ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 giải pháp 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 thực sự 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 có sẵn, nhưng phản hồi 200 OK không nhất thiết có nghĩa là URL có sẵn, vì có một số trường hợp đặc biệt:

  • Một trang web kết xuất phía máy chủ sẽ hiển thị "Không tìm thấy" khi không có nội dung nhưng có 200 OK.
  • Một trang web kết xuất phía máy chủ sẽ phản hồi bằng 200 OK khi không có nội dung nào sau khi chuyển hướng đến trang "Không tìm thấy".
  • Ứng dụng trang đơn phản hồi bằng giao diện 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 đặc biệt này, người dùng sẽ được chuyển tiếp đến trang "Không tìm thấy" và điều đó sẽ gây nhầm lẫn.

Đó là lý do có một cơ chế tiêu chuẩn được đề xuất để 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 dành riêng: /.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 một URL thay đổi mật khẩu phù hợp từ /.well-known/change-password trước 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ề quy cách này, vui lòng báo cáo vấn đề cho kho lưu trữ quy cách.

Tài nguyên

Ảnh của Matthew Brodeur trên Unsplash