비밀번호 변경을 위한 잘 알려진 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에서 대체 페이지를 모르는 경우 웹사이트의 홈페이지를 엽니다.

비밀번호 관리자는 사용자를 이 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매튜 브로더릭