將對 /.well-known/change-password
提出的要求重新導向至變更密碼網址
設定從 /.well-known/change-password
重新導向至網站的變更密碼頁面。這樣一來,密碼管理工具就能直接將使用者導向該頁面。
簡介
如你所知,密碼並非管理帳戶的最佳方式。幸好,WebAuthn 等新興技術和一次性密碼等技術,有助於我們朝著無密碼的世界邁進。不過,這些技術仍在開發中,不會快速改變。許多開發人員至少在未來幾年內,仍需要處理密碼。在等待新興技術和方法普及之前,我們至少可以讓密碼更容易使用。
最好的做法是提供更完善的密碼管理工具支援。
密碼管理工具的優點
密碼管理工具可內建於瀏覽器,或以第三方應用程式的形式提供。他們可以透過多種方式協助使用者:
自動填入正確輸入欄位的密碼:即使網站未針對這項功能進行最佳化,部分瀏覽器仍可透過啟發式搜尋找到正確的輸入內容。網頁開發人員可以透過正確註解 HTML 輸入標記,協助密碼管理工具。
防範網路釣魚攻擊:密碼管理工具會記住密碼的記錄位置,因此密碼只會在適當的網址中自動填入,不會在網路釣魚網站中填入。
產生不重複的高強度密碼:由於密碼管理工具會直接產生及儲存不重複的高強度密碼,使用者不必記住密碼的任何一個字元。
使用密碼管理工具產生及自動填入密碼,可為網站提供良好的服務,但考量到密碼的生命週期,在需要時更新密碼,與產生及自動填入密碼一樣重要。為了妥善運用這項功能,密碼管理工具會新增以下新功能:
偵測有安全疑慮的密碼並建議更新:密碼管理工具可偵測重複使用的密碼、分析這些密碼的熵值和弱點,甚至偵測可能遭到洩漏的密碼,或從 Have I Been Pwned 等來源取得已知不安全的密碼。
密碼管理工具可提醒使用者有問題的密碼,但要求使用者從首頁前往變更密碼頁面,再加上實際變更密碼的程序 (各網站的程序不同),使用者會遇到許多阻礙。如果密碼管理工具可以直接將使用者導向變更密碼網址,將會更為方便。這時可靠的密碼變更網址就派上用場。
只要保留可將使用者重新導向至變更密碼頁面的知名網址路徑,網站就能輕鬆將使用者重新導向至正確的變更密碼頁面。
設定「變更密碼的常用網址」
建議使用 .well-known/change-password
做為變更密碼的知名網址。您只需設定伺服器,將 .well-known/change-password
要求重新導向至網站的變更密碼網址即可。
舉例來說,假設您的網站是 https://example.com
,變更密碼的網址是 https://example.com/settings/password
。您只需設定伺服器,將 https://example.com/.well-known/change-password
的要求重新導向至 https://example.com/settings/password
。就是這麼簡單!如要重新導向,請使用 HTTP 狀態碼
302 Found
、303 See
Other
或 307
Temporary Redirect
。
或者,您也可以使用 http-equiv="refresh"
在 .well-known/change-password
網址中提供 HTML 和 <meta>
標記。
<meta http-equiv="refresh" content="0;url=https://example.com/settings/password">
查看變更密碼頁面的 HTML
這項功能的目標是協助使用者更順暢地管理密碼生命週期。您可以採取兩種做法,讓使用者無縫更新密碼:
- 如果變更密碼表單需要目前密碼,請將
autocomplete="current-password"
新增至<input>
標記,協助密碼管理工具自動填入密碼。 - 針對新密碼欄位 (在許多情況下,這會是兩個欄位,用於確保使用者已正確輸入新密碼),請將
autocomplete="new-password"
新增至<input>
標記,協助密碼管理工具建議產生的密碼。
如要進一步瞭解,請參閱登入表單最佳做法。
實際應用
範例
多虧 Apple Safari 的導入,/.well-known/change-password
已在部分主要網站上推出一段時間:
歡迎你親自體驗,並在自己的裝置上試試看!
瀏覽器相容性
自 2019 年起,Safari 就支援用於變更密碼的已知網址。Chrome 的密碼管理工具將從 86 以上版本開始支援這項功能 (預計於 2020 年 10 月下旬發布穩定版),其他以 Chromium 為基礎的瀏覽器也可能會跟進。Firefox 認為值得實施,但截至 2020 年 8 月,尚未表示計畫實施。
Chrome 的密碼管理工具行為
讓我們來看看 Chrome 的密碼管理工具如何處理有安全疑慮的密碼。
Chrome 的密碼管理工具可檢查是否有密碼外洩的情形。使用者只要前往 about://settings/passwords
,即可針對儲存的密碼執行「檢查密碼」,並查看建議更新的密碼清單。
在建議更新的密碼旁邊,按一下「變更密碼」按鈕,瀏覽器就會:
- 如果
/.well-known/change-password
已正確設定,請開啟網站的變更密碼頁面。 - 如果未設定
/.well-known/change-password
,且 Google 不知道備用網址,系統會開啟網站首頁。
200 OK
,但 /.well-known/change-password
不存在,該怎麼辦?密碼管理工具會在實際將使用者轉送至這個網址之前,先傳送要求給 /.well-known/change-password
,藉此判斷網站是否支援變更密碼的知名網址。如果要求傳回 404 Not Found
,表示網址無法使用,但 200 OK
回應不一定表示網址可用,因為有幾種極端情況:
- 當伺服器端算繪網站沒有內容,但有
200 OK
時,會顯示「找不到」。 - 在重新導向至「找不到」頁面後,如果沒有任何內容,伺服器端算繪網站會以
200 OK
回應。 - 單頁應用程式會使用
200 OK
回應殼層,並在沒有內容時在用戶端顯示「找不到」頁面。
在這些極端情況下,使用者會被轉送至「找不到」頁面,這會造成混淆。
因此,我們建議採用標準機制,透過要求隨機網頁,判斷伺服器是否已設定為在沒有內容時傳回 404 Not Found
。事實上,網址也已保留:/.well-known/resource-that-should-not-exist-whose-status-code-should-not-be-200
。舉例來說,Chrome 會使用這個網址路徑,判斷是否可以預先從 /.well-known/change-password
取得正確的變更密碼網址。
部署 /.well-known/change-password
時,請確認伺服器會針對任何不存在的內容傳回 404 Not Found
。
意見回饋
如果您對規格有任何意見,請向規格存放區提交問題。
資源
相片來源:Matthew Brodeur 在 Unsplash 網站上提供