비밀번호 변경을 위한 잘 알려진 URL을 추가하여 사용자가 비밀번호를 쉽게 변경할 수 있도록 지원합니다.

/.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로 이동하면 저장된 비밀번호에 대해 비밀번호 확인을 실행하고 업데이트 권장 비밀번호 목록을 볼 수 있습니다.

Chrome의 비밀번호 확인 기능

업데이트 권장 비밀번호 옆에 있는 비밀번호 변경 버튼을 클릭하면 브라우저에서 다음 작업을 실행합니다.

  • /.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를 반환하는지 확인합니다.

의견

사양에 관한 의견이 있으면 사양 저장소에 문제를 제출하세요.

리소스

사진: Unsplash매튜 브로더릭