/.well-known/change-password
에 대한 요청을 change-passwords URL로 리디렉션
/.well-known/change-password
에서 웹사이트의 비밀번호 변경 페이지로 리디렉션을 설정합니다. 이렇게 하면 비밀번호 관리자가 사용자를 해당 페이지로 직접 안내할 수 있습니다.
소개
아시다시피 비밀번호는 계정을 관리하는 가장 좋은 방법이 아닙니다. 다행히 WebAuthn과 같은 신규 기술과 일회용 비밀번호와 같은 기법이 비밀번호 없는 세상에 한 걸음 더 다가가도록 돕고 있습니다. 하지만 이러한 기술은 아직 개발 중이며 상황이 빠르게 바뀌지는 않을 것입니다. 앞으로 몇 년 동안은 많은 개발자가 비밀번호를 처리해야 합니다. 신기술과 기법이 보편화될 때까지는 적어도 비밀번호를 더 쉽게 사용할 수 있도록 할 수 있습니다.
이를 위한 좋은 방법은 비밀번호 관리자를 더 효과적으로 지원하는 것입니다.
비밀번호 관리자의 이점
비밀번호 관리자는 브라우저에 내장되거나 서드 파티 앱으로 제공될 수 있습니다. 다음과 같은 다양한 방식으로 사용자를 지원할 수 있습니다.
올바른 입력란의 비밀번호 자동 완성: 일부 브라우저는 웹사이트가 이 목적으로 최적화되지 않은 경우에도 휴리스틱 방식으로 올바른 입력란을 찾을 수 있습니다. 웹 개발자는 HTML 입력 태그에 주석을 달아 비밀번호 관리자를 도울 수 있습니다.
피싱 방지: 비밀번호 관리자는 비밀번호가 기록된 위치를 기억하므로 피싱 웹사이트가 아닌 적절한 URL에서만 비밀번호가 자동 완성될 수 있습니다.
강력하고 고유한 비밀번호 생성: 강력하고 고유한 비밀번호는 비밀번호 관리자가 직접 생성하고 저장하므로 사용자는 비밀번호의 한 자도 기억하지 않아도 됩니다.
비밀번호 관리자를 사용하여 비밀번호를 생성하고 자동 완성하는 기능은 이미 웹에 유용하게 사용되고 있지만, 비밀번호의 수명 주기를 고려할 때 필요할 때마다 비밀번호를 업데이트하는 것이 생성 및 자동 완성만큼이나 중요합니다. 이를 적절하게 활용하기 위해 비밀번호 관리자에 새로운 기능이 추가됩니다.
취약한 비밀번호 감지 및 업데이트 제안: 비밀번호 관리자는 재사용되는 비밀번호를 감지하고, 비밀번호의 엔트로피와 취약점을 분석할 수 있으며, Have I Been Pwned와 같은 소스에서 유출되었을 가능성이 있거나 안전하지 않은 것으로 알려진 비밀번호를 감지할 수도 있습니다.
비밀번호 관리자는 사용자에게 문제가 있는 비밀번호에 관해 경고할 수 있지만, 사용자에게 홈페이지에서 비밀번호 변경 페이지로 이동하도록 요청하는 데는 많은 불편함이 있으며, 실제 비밀번호 변경 절차 (사이트마다 다름)도 거쳐야 합니다. 비밀번호 관리자가 사용자를 비밀번호 변경 URL로 바로 안내할 수 있다면 훨씬 더 쉬울 것입니다. 이때 비밀번호 변경을 위한 잘 알려진 URL이 유용합니다.
사용자를 비밀번호 변경 페이지로 리디렉션하는 잘 알려진 URL 경로를 예약하면 웹사이트에서 사용자를 비밀번호를 변경할 수 있는 적절한 위치로 쉽게 리디렉션할 수 있습니다.
'비밀번호 변경을 위한 잘 알려진 URL' 설정
.well-known/change-password
는 비밀번호를 변경하는 잘 알려진 URL로 제안됩니다. .well-known/change-password
요청을 웹사이트의 비밀번호 변경 URL로 리디렉션하도록 서버를 구성하기만 하면 됩니다.
예를 들어 웹사이트가 https://example.com
이고 비밀번호 변경 URL이 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"
를 사용하여 <meta>
태그와 함께 .well-known/change-password
URL에서 HTML을 게재할 수 있습니다.
<meta http-equiv="refresh" content="0;url=https://example.com/settings/password">
비밀번호 변경 페이지 HTML 다시 방문
이 기능의 목표는 사용자의 비밀번호 수명 주기를 더 원활하게 하는 것입니다. 사용자가 원활하게 비밀번호를 업데이트할 수 있도록 다음 두 가지 작업을 할 수 있습니다.
- 비밀번호 변경 양식에 현재 비밀번호가 필요한 경우
<input>
태그에autocomplete="current-password"
를 추가하여 비밀번호 관리자가 자동 완성할 수 있도록 합니다. - 새 비밀번호 필드 (대부분 사용자가 새 비밀번호를 올바르게 입력했는지 확인하기 위한 두 필드)의 경우
<input>
태그에autocomplete="new-password"
를 추가하여 비밀번호 관리자가 생성된 비밀번호를 제안하도록 합니다.
로그인 양식 권장사항에서 자세히 알아보세요.
실제 사용 사례
예
Apple Safari의 구현 덕분에 /.well-known/change-password
는 이미 몇몇 주요 웹사이트에서 사용되고 있습니다.
직접 사용해 보고 내 앱에도 적용해 보세요.
브라우저 호환성
비밀번호를 변경하는 잘 알려진 URL은 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에서 대체 페이지를 모르는 경우 웹사이트의 홈페이지를 엽니다.
/.well-known/change-password
가 존재하지 않는데도 서버가 200 OK
를 반환하면 어떻게 되나요?비밀번호 관리자는 사용자를 이 URL로 실제로 전달하기 전에 /.well-known/change-password
에 요청을 전송하여 웹사이트에서 비밀번호 변경을 위한 잘 알려진 URL을 지원하는지 확인합니다. 요청이 404 Not Found
를 반환하면 URL을 사용할 수 없음이 분명하지만 200 OK
응답이 반드시 URL을 사용할 수 있다는 의미는 아닙니다. 몇 가지 특이 사례가 있기 때문입니다.
- 서버 측 렌더링 웹사이트는 콘텐츠가 없지만
200 OK
가 있는 경우 '찾을 수 없음'을 표시합니다. - 서버 측 렌더링 웹사이트는 '찾을 수 없음' 페이지로 리디렉션한 후 콘텐츠가 없으면
200 OK
로 응답합니다. - 단일 페이지 앱은
200 OK
가 있는 셸로 응답하고 콘텐츠가 없으면 클라이언트 측에서 '찾을 수 없음' 페이지를 렌더링합니다.
이러한 특이한 경우에는 사용자가 '찾을 수 없음' 페이지로 리디렉션되며 이는 혼란을 야기할 수 있습니다.
따라서 무작위 페이지를 요청하여 실제로 콘텐츠가 없는 경우 서버가 404 Not Found
로 응답하도록 구성되어 있는지 확인하는 제안된 표준 메커니즘이 있습니다. 실제로 URL도 예약되어 있습니다. /.well-known/resource-that-should-not-exist-whose-status-code-should-not-be-200
예를 들어 Chrome은 이 URL 경로를 사용하여 /.well-known/change-password
에서 적절한 비밀번호 변경 URL을 미리 예상할 수 있는지 확인합니다.
/.well-known/change-password
를 배포할 때 서버가 존재하지 않는 콘텐츠에 대해 404 Not Found
를 반환하는지 확인합니다.
의견
사양에 관한 의견이 있으면 사양 저장소에 문제를 제출하세요.