비밀번호 변경을 위한 잘 알려진 URL

W3C 작업 초안,

이 문서에 대한 자세한 내용
이 버전:
https://www.w3.org/TR/2024/WD-change-password-url-20240603/
최신 공개 버전:
https://www.w3.org/TR/change-password-url/
편집자 초안:
https://w3c.github.io/webappsec-change-password-url/
이전 버전:
이력:
https://www.w3.org/standards/history/change-password-url/
피드백:
public-webappsec@w3.org 에 제목 줄 “[change-password-url] … 메시지 주제 …”을 사용해 보내십시오(아카이브)
GitHub
명세 내 인라인
편집자:
(Apple Inc.)
(Apple Inc.)

초록

이 명세는 사이트가 사용할 수 있는 잘 알려진 URL을 정의한다. 이를 통해 도구가 비밀번호 변경 양식을 발견할 수 있게 한다. 이 단순한 편의 기능은 소프트웨어가 사용자가 비밀번호를 변경하는 방법을 찾도록 도울 수 있는 방법을 제공한다.

이 문서의 상태

이 절은 이 문서가 공개된 시점의 상태를 설명한다. 현재 W3C 공개 문서와 이 기술 보고서의 최신 개정 목록은 https://www.w3.org/TR/의 W3C 기술 보고서 색인에서 찾을 수 있다.

이 문서는 Web Application Security Working GroupRecommendation 트랙을 사용하여 작업 초안으로 공개했다. 이 문서는 W3C Recommendation이 되는 것을 목표로 한다.

(아카이브된) 공개 메일링 리스트 public-webappsec@w3.org (지침 참조)가 이 명세의 논의에 권장된다. 이메일을 보낼 때에는 제목에 “change-password-url”이라는 텍스트를 넣어야 하며, 가능하면 다음과 같이 작성하는 것이 좋다: “[change-password-url] …의견 요약…

작업 초안으로 공개되었다고 해서 W3C와 그 회원들이 이를 승인했다는 의미는 아니다. 이는 초안 문서이며, 언제든지 다른 문서로 갱신, 대체 또는 폐기될 수 있다. 이 문서를 진행 중인 작업 이외의 것으로 인용하는 것은 적절하지 않다.

이 문서는 Web Application Security Working Group이 작성했다.

이 문서는 W3C Patent Policy에 따라 운영되는 그룹이 작성했다. W3C는 이 그룹의 산출물과 관련하여 이루어진 모든 특허 공개의 공개 목록을 유지하며, 해당 페이지에는 특허 공개 지침도 포함되어 있다. 어떤 개인이 자신이 보기에 Essential Claim(s)을 포함하는 특허를 실제로 알고 있는 경우, 그 개인은 W3C Patent Policy 6절에 따라 해당 정보를 공개해야 한다.

이 문서는 2023년 11월 03일 W3C Process Document의 적용을 받는다.

1. 소개

이 절은 비규범적이다.

클라이언트 측 비밀번호 관리 소프트웨어는 인증을 요구하는 웹사이트의 보안성과 사용성을 모두 향상시키는 데 도움을 준다. 이는 사이트 간 비밀번호 재사용을 줄여 보안을 향상시키고, 자동 완성 기능을 제공하여 사용성을 향상시킨다.

사이트에는 현재 사용자가 비밀번호를 변경할 수 있는 위치를 프로그래밍 방식으로 알릴 방법이 없다. 비밀번호 변경을 위한 잘 알려진 URL을 제안함으로써, 이 명세는 비밀번호 관리자가 이를 지원하는 사이트에서 사용자가 비밀번호를 변경하도록 도울 수 있게 한다.

2. 기반 구조

이 명세는 Infra Standard에 의존한다. [INFRA]

이 명세는 Fetch, HTML, HTTP 및 URL 표준의 용어를 사용한다. [FETCH] [HTML] [HTTP-SEMANTICS] [URL]

3. 비밀번호 변경 URL

오리진change password url은 클라이언트가 오리진에서 사용자가 비밀번호를 갱신하기 위해 어디로 가야 하는지를 발견하는 데 사용할 수 있는 리소스를 가리키는 URL이다.

origin이 주어졌을 때, 클라이언트는 다음 단계를 실행하여 generate a change password url한다:

  1. origin잠재적으로 신뢰할 수 있는 오리진이 아니면 실패를 반환한다.

  2. Assert: origin튜플 오리진이다.

  3. url을 다음과 같이 값이 설정된 새 URL이라고 하자:

    스킴

    origin스킴

    호스트

    origin호스트

    포트

    origin포트

    경로

    « ".well-known", "change-password" ».

  4. url을 반환한다.

오리진 "https://example.com/"에 대한 change password url은 "https://example.com/.well-known/change-password"이다.

서버는 오리진change password url에 대한 HTTP 요청을 사용자가 비밀번호를 변경할 수 있는 실제 페이지로 리다이렉트해야 하며, 이는 302, 303 또는 307의 리다이렉트 상태Location 헤더를 포함한 응답을 반환함으로써 수행한다. [FETCH] [HTTP-SEMANTICS] 클라이언트는 change password url을 요청할 때 이러한 리다이렉트를 처리해야 한다.

참고: 위 문단은 서버가 임시 리다이렉트 코드만 사용하도록 제한한다. Issue 13을 참조하라.

필요한 경우, 서버는 refresh 상태http-equiv pragma 지시자를 포함하는 HTML 문서로 응답할 수 있다. [HTML] 클라이언트는 change password url을 요청할 때 이러한 리다이렉트를 처리해야 한다.

서버는 RFC8615 §1.1 Appropriate Use of Well-Known URIs에 따라, 실제 비밀번호 변경 페이지를 change password url에 위치시켜서는 안 된다. 클라이언트는 change password url을 요청할 때 ok status 응답을 처리해야 한다.

참고: 구현은 change password url을 표시할 때 ToUnicode를 사용하고자 할 수 있다. [IDNA]

[RESPONSE-CODE-RELIABILITY]test the reliability of an origin’s response status codes를 사용하라.

4. IANA 고려사항

4.1. change-password 잘 알려진 URI

이 문서는 “.well-known” URI change-password를 정의한다. 이 등록은 [WELL-KNOWN]에 정의된 템플릿을 사용하여 검토, 승인 및 IANA 등록을 위해 IESG에 제출될 것이며, 그 내용은 다음과 같다:

URI suffix

change-password

Change controller

W3C

Specification document(s)

이 문서가 관련 명세이다. (§ 3 비밀번호 변경 URL 참조)

Related information:

없음.

감사의 말

이 제안에 피드백을 제공해 준 Anne van Kesteren, Cl1608Ho, Dan Bernstein, David Singer, Dean Jackson, Florian Rivoal, John Wilander, Maciej Stachowiak, Mark Nottingham, Mike West, 그리고 Ricky Mondello에게 감사한다. 이 제안의 모든 기능은 그들의 것이며, 모든 버그는 나의 것이다.

적합성

문서 규약

적합성 요구사항은 설명적 단언과 RFC 2119 용어의 조합으로 표현된다. 이 문서의 규범적 부분에서 쓰인 핵심어 “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, 그리고 “OPTIONAL”은 RFC 2119에 설명된 대로 해석되어야 한다. 다만 가독성을 위해, 이 명세에서는 이러한 단어들이 모두 대문자로 나타나지는 않는다.

이 명세의 모든 텍스트는 명시적으로 비규범적이라고 표시된 절, 예제 및 참고를 제외하고 규범적이다. [RFC2119]

이 명세의 예제는 “예를 들어”라는 말로 도입되거나 규범적 텍스트와 분리되어 class="example"으로 표시된다. 다음과 같다:

이는 정보성 예제의 예이다.

정보성 참고는 “참고”라는 단어로 시작하며 규범적 텍스트와 분리되어 class="note"로 표시된다. 다음과 같다:

참고, 이는 정보성 참고이다.

적합 알고리즘

알고리즘의 일부로 명령형으로 표현된 요구사항 (예: "모든 선행 공백 문자를 제거한다" 또는 "false를 반환하고 이 단계를 중단한다")은 알고리즘을 도입할 때 사용된 핵심어 ("must", "should", "may" 등)의 의미로 해석되어야 한다.

알고리즘이나 특정 단계로 표현된 적합성 요구사항은 최종 결과가 동등하기만 하다면, 어떤 방식으로든 구현될 수 있다. 특히 이 명세에 정의된 알고리즘은 이해하기 쉽도록 의도되었으며, 성능이 뛰어나도록 의도된 것은 아니다. 구현자는 최적화할 것을 권장한다.

색인

이 명세에서 정의된 용어

참조로 정의된 용어

참고 문헌

규범적 참고 문헌

[FETCH]
Anne van Kesteren. Fetch Standard. Living Standard. URL: https://fetch.spec.whatwg.org/
[HTML]
Anne van Kesteren; et al. HTML Standard. Living Standard. URL: https://html.spec.whatwg.org/multipage/
[HTTP-SEMANTICS]
R. Fielding, Ed.; M. Nottingham, Ed.; J. Reschke, Ed.. HTTP Semantics. 2022년 6월. Internet Standard. URL: https://httpwg.org/specs/rfc9110.html
[INFRA]
Anne van Kesteren; Domenic Denicola. Infra Standard. Living Standard. URL: https://infra.spec.whatwg.org/
[RESPONSE-CODE-RELIABILITY]
Ricky Mondello; Theresa O'Connor. Detecting the reliability of HTTP status codes. CG-DRAFT. URL: https://wicg.github.io/change-password-url/response-code-reliability.html
[RFC2119]
S. Bradner. Key words for use in RFCs to Indicate Requirement Levels. 1997년 3월. Best Current Practice. URL: https://datatracker.ietf.org/doc/html/rfc2119
[RFC7231]
R. Fielding, Ed.; J. Reschke, Ed.. Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content. 2014년 6월. Proposed Standard. URL: https://httpwg.org/specs/rfc7231.html
[SECURE-CONTEXTS]
Mike West. Secure Contexts. 2023년 11월 10일. CR. URL: https://www.w3.org/TR/secure-contexts/
[URL]
Anne van Kesteren. URL Standard. Living Standard. URL: https://url.spec.whatwg.org/
[WELL-KNOWN]
M. Nottingham. Well-Known Uniform Resource Identifiers (URIs). 2019년 5월. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc8615

정보성 참고 문헌

[IDNA]
Mark Davis; Michel Suignard. Unicode IDNA Compatibility Processing. 2023년 9월 5일. Unicode Technical Standard #46. URL: https://www.unicode.org/reports/tr46/tr46-31.html

이슈 색인

[RESPONSE-CODE-RELIABILITY]test the reliability of an origin’s response status codes를 사용하라.