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 tới /.well-known/change-password đến URL thay đổi mật khẩu

Đặt lệnh chuyển hướng từ /.well-known/change-password đến trang thay đổi mật khẩu của trang web. Việc này sẽ cho phép trình quản lý mật khẩu điều 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. Thật may là có các công nghệ mới nổi như WebAuthn và các kỹ thuật như mật khẩu một lần đã giúp chúng tôi 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 tôi vẫn có thể tạo mật khẩu dễ sử dụng hơn.

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

Cách trình quản lý mật khẩu hỗ trợ

Trình quản lý mật khẩu có thể được tích hợp vào trình duyệt hoặc cung cấp dưới dạng ứng dụng bên thứ ba. Chúng 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ông tin đầu vào chính xác theo cách phỏng đoán 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 thẻ nhập HTML đúng cách.

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 tại các URL thích hợp, chứ không thể được tự động điền tại các trang web lừa đảo.

Tạo mật khẩu mạnh và duy nhất: Vì trình quản lý mật khẩu trực tiếp tạo và lưu trữ các mật khẩu mạnh và độc nhất nên người dùng không phải nhớ một ký tự 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 là một cách hiệu quả trên web. Tuy nhiên, khi 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, trình quản lý mật khẩu sẽ thêm một tính năng mới:

Phát hiện các mật khẩu dễ bị tấn công và đề xuất cập nhật các mật khẩu đó: Trình quản lý mật khẩu có thể phát hiện các mật khẩu được sử dụng lại, phân tích điểm yếu entropy và điểm yếu của mật khẩu, thậm chí là phát hiện các mật khẩu có khả năng bị rò rỉ hoặc mật khẩu được cho là không an toàn qua 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 đề. Tuy nhiên, việc yêu cầu người dùng chuyển từ trang chủ sang trang thay đổi mật khẩu sẽ gặp nhiều khó khăn, ngoài việc thực hiện quy trình thay đổi mật khẩu thực tế (khác nhau tuỳ theo 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 người dùng trực tiếp đến URL thay đổi mật khẩu. Đây là khi 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 để đổ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àm một URL phổ biến để thay đổi mật khẩu. Bạn chỉ cần định cấu hình máy chủ của mình để chuyển hướng các yêu cầu dành 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 từ https://example.com/.well-known/change-password đến https://example.com/settings/password. Vậy là xong. Đối với hoạt động 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">

Truy cập 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 cho vòng đời mật khẩu của người dùng linh hoạt 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 dễ dàng:

  • 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.
  • Đối với trường mật khẩu mới (trong nhiều trường hợp, trường này là hai trường để đảm bảo người dùng đã nhập đúng 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 trong 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 dữ liệu trong thế giới thực

Ví dụ

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

Hãy thử và làm tương tự cho sản phẩm 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 hỗ trợ trong Safari kể từ năm 2019. Trình quản lý mật khẩu của Chrome sẽ bắt đầu hỗ trợ trình quản lý mật khẩu này từ phiên bản 86 trở đi (dự kiến ra mắt bản phát hành chính thức vào cuối tháng 10 năm 2020) và các trình duyệt khác dựa trên Chromium sẽ có thể xuất hiện trong tương lai. Firefox cho rằng việc này đáng để triển khai, nhưng chưa đưa ra tín hiệu rằng họ có kế hoạch thực hiện 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 cùng 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ị tấn công.

Trình quản lý mật khẩu của Chrome có thể kiểm tra xem có mật khẩu nào bị rò rỉ 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 đối với mật khẩu đã lưu trữ và xem danh sách các 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 nhấp vào nút Change password (Thay đổi mật khẩu) bên cạnh một mật khẩu mà 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 /.well-known/change-password được thiết lập đú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 phiên bản 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ợ một 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ó thể truy cập được, vì có một số trường hợp hiếm gặp:

  • Trang web kết xuất phía máy chủ sẽ hiển thị thông báo "Not found" (Không tìm thấy) khi không có nội dung ngoài nội dung có 200 OK.
  • 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 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 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 tiếp đến trang "Không tìm thấy" và đây sẽ là nguyên nhân gây nhầm lẫn.

Đó là lý do chúng tôi đề xuất một cơ chế 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 hay không khi thực sự không có nội dung, bằng cách yêu cầu một trang ngẫu nhiên. Trên thực tế, URL 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ể nhận được 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.

Ý kiến phản hồi

Nếu bạn có ý kiến phản hồi về quy cách, vui lòng báo cáo vấn đề đến kho lưu trữ quy cách.

Tài nguyên

Ảnh của Matthew Brodeur trên Unsplash