hmk run dev
Sec-CH-UA(Security-ClientHint-UserAgent) 본문
웹 브라우저의 보안 클라이언트 힌트 (Sec-CH-UA) 이해하기
웹 브라우저는 서버에게 어떻게 동작하고 어떤 환경에서 실행되고 있는지에 대한 정보를 전송하기 위해 다양한 헤더를 사용합니다. 이 중에서도 "Sec-CH-UA" 헤더는 보안 클라이언트 힌트의 사용자 에이전트 정보를 제공하는 중요한 역할을 합니다. 이번 글에서는 "Sec-CH-UA" 헤더의 각 필드에 대해 자세히 알아보겠습니다.
"Sec-CH-UA"와 관련된 헤더는 주로 웹 브라우저에 의해 자동으로 생성되며, 클라이언트 측에서 서버에 전송됩니다. 이 헤더는 브라우저의 사용자 에이전트 정보와 함께 웹 페이지 요청에 포함됩니다.
유저가 어떤 환경에서 우리 서비스를 사용하는지에 대한 정보를 수집할 수도 있으며
웹사이트 크롤링을 방어할 때 Sec-CH-UA 포함 여부를 검사해 브라우저에서 보낸 요청인지 식별하는 경우가 꽤 있습니다.
도입이유
기존에 User-Agent HTTP 헤더에서 브라우저, OS, 사용자의 기기 정보 등 사용자 에이전트 정보를 얻을 수 있었음
But
User-Agent string에는 많은 엔트로피(정보량)가 담겨 있어 개인정보 침해 문제 이슈가 있었음
Chrome은 이러한 문제를 해결하고자 Client Hints를 헤더에 포함하는 방향으로 변경
Sec-CH-UA
- Google Chrome: 버전 "123"
- Not:A-Brand: 버전 "8"
- Chromium: 버전 "123"
헤더의 가장 기본적인 필드는 웹 브라우저의 이름과 버전 정보입니다. 위의 예시에서는 "Google Chrome", "Not:A-Brand", "Chromium" 등의 브라우저들과 그들의 버전 정보가 포함되어 있습니다.
Sec-CH-UA-Arch
- Arch: "arm"
이 필드는 웹 브라우저가 실행되고 있는 아키텍처 정보를 제공합니다. 예시에서는 "arm" 아키텍처를 사용하고 있습니다.
Sec-CH-UA-Bitness
- Bitness: "64"
웹 브라우저의 비트 버전 정보를 나타냅니다. 위의 예시에서는 64비트 버전을 사용하고 있습니다.
Sec-CH-UA-Full-Version-List
- Google Chrome: "123.0.6312.122"
- Not:A-Brand: "8.0.0.0"
- Chromium: "123.0.6312.122"
이 필드는 각 브라우저의 전체 버전 정보를 제공합니다.
Sec-CH-UA-Mobile
- Mobile:? 0
웹 브라우저가 모바일 장치에서 실행되고 있는지의 여부를 나타냅니다. "?"는 이 필드의 값이 불분명하다는 것을 의미합니다.
Sec-CH-UA-Model
- Model: ""
모바일 장치의 모델 정보를 제공합니다. 위의 예시에서는 정보가 제공되지 않았습니다.
Sec-CH-UA-Platform
- Platform: "macOS"
웹 브라우저가 실행되고 있는 플랫폼 정보를 제공합니다.
Sec-CH-UA-Platform-Version
- Platform Version: "13.2.1"
플랫폼의 버전 정보를 제공합니다.
Sec-CH-UA-Wow64
- Wow64:? 0
이 필드는 웹 브라우저가 32비트 환경에서 64비트 애플리케이션으로 실행되고 있는지의 여부를 나타냅니다.
Reference
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Sec-CH-UA