디지털 지문 수집은 웹사이트를 다시 방문할 때 사용자를 식별하거나 여러 웹사이트에서 동일한 사용자를 식별하는 것을 의미합니다. 내 설정과 다른 사용자의 설정 간에는 많은 특성이 다를 수 있습니다. 예를 들어 다른 유형의 기기를 사용하고 있을 수 있습니다. 다른 브라우저를 사용하고 화면 크기가 다르고 설치된 글꼴도 다릅니다. 'Dejavu Sans' 글꼴이 있는 경우 설치되어 있지 않은 경우 모든 웹사이트에서 해당 글꼴을 확인하여 사용자와 나의 차이점을 구별할 수 있습니다. 이렇듯 디지털 지문 수집이 가능함 이러한 데이터 포인트의 컬렉션을 구축하며 각 데이터 포인트는 사용자를 구분하는 더 많은 방법을 제공합니다.
보다 공식적인 정의는 다음과 같습니다. 디지털 지문 수집은 분명하고 명확하지 않은 장기 지속 가능성을 사용하는 행동입니다. 가능한 한 많은 다른 사용자와 구별하기 위해 사용자 설정의 특성을 지정합니다.
디지털 지문 수집이 사용자 개인 정보 보호를 방해하는 이유
사기 행위 감지와 같이 사용자의 디지털 지문 수집이 중요한 극단적인 사례도 있습니다. 디지털 지문 수집은 사이트 전반에 걸쳐 사용자를 추적하는 데 사용되며, 추적은 사용자의 동의 없이 또는 경우에 따라서는 사용자에게 충분한 정보를 제공하지 않은 경우 이 작업이 완료되고 나면 사용자는 종종 다소 배신당했다고 느끼는 것이죠.
디지털 지문 수집은 특정 사용자를 다른 사용자와 은밀하게 구분하는 방법을 찾는 것을 의미합니다. 디지털 지문 수집은 동일한 웹사이트에서 동일한 사용자이거나 동시에 두 개의 다른 브라우저 프로필에서 동일한 사용자를 인식할 수 있습니다. 즉, 사이트 전반에서 사용자를 추적하는 데 지문을 사용할 수 있습니다. 추적의 결정론적이고 명확한 방법은 고유한 사용자별 ID를 갖는 쿠키를 저장하는 경우 어느 정도는 사용자에 의해 관찰되고 (이전 모듈에서는 이러한 접근 방식 중 몇 가지를 설명했습니다). 하지만 디지털 지문 수집은 비밀이기 때문이죠. 변하지 않는 특성에 의존하며, 눈에 띄지 않게 일어날 가능성이 큽니다. 그래서 '디지털 지문 수집'이 포함됩니다. 디지털 지문인지 또는 지문인지에 관계없이 지문은 변경하기가 매우 어렵습니다. 손가락에 끼워 넣으면 됩니다.
브라우저 공급업체는 사용자가 추적을 원하지 않는다는 사실을 알고 있으며 디지털 지문 수집을 제한하는 기능을 지속적으로 구현하고 있습니다. 이 중 일부는 이전 모듈에서 살펴보았습니다. 이번 시간에는 이러한 기능이 비즈니스에 어떤 영향을 미칠 수 있는지 개인 정보를 보호하는 방식으로 계속해서 원하는 작업을 하는 방법을 알아봅니다. 브라우저 보호 기능 자세히 알아보기 차단하는 방법은 디지털 지문 수집을 중단하는 방식이 아니라 사용자의 작업 및 방법에 영향을 미칩니다.
실제로 대부분의 개발자와 대부분의 기업은 사용자를 디지털 지문으로 수집할 필요가 없습니다. 앱에서 사용자에게 로그인이 필요한 경우 사용자가 동의하에 일방적으로 거부할 수 있는 방식으로 자신을 밝힐 수 있습니다. 언제든지 액세스할 수 있습니다. 이는 로그인한 사용자를 파악하기 위한 개인 정보 보호 방법입니다. 앱이 사용자가 로그인해야 하므로 사용자의 로그인 정보를 더욱 안전하게 보호할 수 있습니다. 개인 정보 보호에 대한 정보를 수집하며 필요한 데이터만 표시할 수 있습니다.
권장사항
디지털 지문 수집에 대해 서드 파티를 평가합니다. 서드 파티 모듈의 일부로 포함된 서드 파티 서비스와 해당 서비스의 웹 요청 목록이 이미 있을 수 있습니다. 2단계 인증으로 해당 요청을 검사하여 작성자(있는 경우)에게 다시 전달되는 데이터를 확인합니다. 하지만 이는 종종 어렵습니다. 디지털 지문 수집은 본질적으로 사용자 승인 대상이 아닌 데이터를 요청하는 은밀한 프로세스입니다.
또한 서드 파티 서비스 및 종속 항목의 개인정보처리방침을 읽고 디지털 지문 수집의 징후를 찾는 것이 좋습니다. 있습니다. '확률적 일치'라고도 하며, 확률적 일치 기법 모음의 일부로 '확정 일치'와 대비되는 개념입니다.
디지털 지문 수집의 작동 방식
이러한 모든 속성의 개인적인 조합은 각자의 고유한 특성이거나 적어도 비슷한 집단의 사람들에게 은밀하게 추적하는 데 사용될 수 있습니다.
참고: 패시브 및 능동적 디지털 지문 수집
수동적 디지털 지문 수집 기법과 능동 디지털 지문 수집 기법 사이에는 유용한 차이가 있습니다. 패시브 디지털 지문 수집 기법은 웹사이트에 기본적으로 제공되는 정보를 사용하는 기술입니다. 능동적 디지털 지문 수집 기법은 이 함수는 추가 정보를 위해 브라우저를 명시적으로 조사합니다. 이러한 구분이 중요한 이유는 브라우저가 활성 기술을 감지 및 가로채거나 완화하려고 시도할 수 있습니다. API가 제한되거나 대화상자 뒤에 게이트웨이로 연결될 수 있음 사용자에게 권한을 요청 (따라서 앱이 사용되고 있음을 사용자에게 알리거나 사용자가 이를 거부할 수 있도록 허용) )을 지정합니다. 수동적 기법은 이미 웹사이트에 제공된 데이터를 사용하는 기법입니다. 왜냐하면 역사적으로 정보 초고속도로 초창기에는 이 정보가 모든 사이트에 제공되었습니다. user-agent 문자열은 이 예시에 대해 더 자세히 살펴보겠습니다. 이는 상당히 많은 양의 데이터를 제공하는 데 사용자의 브라우저, 버전, 운영체제에 대한 정보를 수집하여 웹사이트에서 다양한 할 수 있습니다. 그러나 이로 인해 사용 가능한 구별 정보의 양이 증가합니다. 한 사용자를 다른 사용자와 식별하는 데 도움이 됩니다. 따라서 이러한 정보는 점점 더 이상 사용할 수 없게 되거나 더 이상 구별되지 않습니다. 이 정보를 바탕으로 하는 업무가 있다면, 예를 들어 브랜치하지 않을 수 있습니다. 그러면 브라우저가 점점 더 그 정보를 동결하거나 중지함에 따라 이 코드가 손상될 수 있습니다. 여기에서는 테스트가 최선의 방어 수단입니다 ( 나중에 참조).
참고: 디지털 지문 인식 가능 여부 측정
이러한 각 데이터 포인트에서 제공하는 정보의 양을 기술적으로 측정한 값을 엔트로피라고 하며 비트 단위로 측정됩니다. 가능한 값이 많은 기능 (예: 설치된 글꼴 목록)은 많은 비트에 영향을 줄 수 있습니다. 사용 중인 운영체제와 같이 구별하기 힘이 들지 않는 요소는 있습니다. HTTP Almanac에서는 기존 디지털 지문 수집이 라이브러리는 다양한 API의 응답을 '해시'로 결합하는 과정을 자동화합니다. 단 한 명일 수도 있는 작은 사용자 그룹입니다. 모드 날파스는 이 부분에 대해 이 YouTube 동영상에서 하는 일이지만 간략히 말하면, 좋아하는 음악, 좋아하는 음식, 사용하는 언어가 포함된 친구 목록 삭제되었습니다. 한 사람의 목록이 친구 중에서 고유하게 식별할 수도 있고 범위도 좁을 가능성이 높습니다. 소수의 사람들만 볼 수 있도록 했습니다. 디지털 지문 수집은 이렇습니다. 좋아하는 것의 목록은 '해시'가 됩니다. 다음으로 바꿉니다. 이를 통해 한 사용자를 두 개의 서로 다른 연결되지 않은 사이트에서 같은 사람으로 식별하는 것이 더 쉬워집니다. 추적: 사용자의 개인 정보 보호 욕구를 우회합니다.
브라우저에서 디지털 지문 수집에 대해 어떤 작업을 수행하나요?
브라우저 공급업체는 웹사이트 (또는 웹사이트에 포함된 서드 파티)를 위한 다양한 방법을 잘 알고 있습니다. 사용자의 고유한 지문을 계산하거나 고유성에 기여하기 위해 서로 다른 정보 비트를 계산 인식했습니다. 이러한 방법 중 일부는 명시적이고 의도적인 것입니다. 예를 들어 브라우저의 user-agent 문자열(예: 사용 중인 브라우저, 운영 체제 및 버전을 식별하며, 다른 브라우저를 사용하고 있음). 일부 방법은 의도적으로 만들어 낸 것이 아니라 브라우저에서 사용할 수 있는 동영상 및 오디오 장치 목록처럼 말이죠 (브라우저에서 자동 업데이트를 사용하지 않아도 이름별로 목록을 가져옵니다.) 이 중 일부는 지문에 기여하는 것으로 판명되어 출시 후(예: 캔버스 요소 글꼴의 앤티앨리어싱 정확한 픽셀 렌더링) 더 많은 것이 있으며 여러분의 브라우저가 내 브라우저와 다른 방식으로 인해 엔트로피가 추가되므로 나와 나의 차이를 구분하고 여러 웹사이트에서 가능한 한 고유하게 개인을 식별할 수 있는 방법을 제공합니다. https://amiunique.org에 디지털 지문에 기여할 수 있는 잠재적인 항목이 많지만 모든 항목이 포함되어 있지는 않습니다. 기능은 계속 늘어나고 목록도 계속 늘어납니다. 원하지 않을 수도 있고 예상하지 않을 수도 있음).
특정 강력한 API를 지원하지 않음
사용자 지문을 계산하는 이러한 모든 접근 방식에 대해 브라우저 공급업체는 이러한 API에서 사용할 수 있는 엔트로피의 양을 나타냅니다. 가장 제한적인 옵션은 애초에 이를 구현하지 않는 것입니다. 이는 여러 주요 브라우저에서 다양한 하드웨어 및 기기 API (예: NFC 및 블루투스 액세스)를 위해 수행되었습니다. 클라이언트 측 웹 앱)에서 디지털 지문 수집 및 개인 정보 보호 문제가 구현되지 않은 이유로 언급했습니다. 이 앱과 서비스에 영향을 미칠 수 있습니다. API를 구현하지 않는 브라우저에서는 API를 전혀 사용할 수 없으며 고려 대상에서 일부 하드웨어 접근 방식을 제한하거나 완전히 차단할 수 있습니다.
사용자 권한 게이트웨이
브라우저 공급업체에서 취하는 두 번째 접근 방식은 일종의 명시적인 사용자 권한 없이 API 또는 데이터 액세스를 방지하는 것입니다. 이 방법은 보안을 위해서도 많이 사용됩니다. 웹사이트에서 웹캠으로 사진을 찍을 수 없어야 합니다. 내 동의 없이! 하지만 여기서는 개인 정보 보호와 보안에 비슷한 관심사가 있을 수 있습니다. 다른 사람의 위치를 식별하는 것은 물론 그 자체로 개인 정보를 침해할 수 있지만 지문의 고유성을 높이는 요인이기도 합니다. 권한 필요 특정 위치가 해당 지문의 고유성에 추가하는 추가 엔트로피를 감소시키지는 않지만, 기본적으로 디지털 지문 수집에 위치정보를 사용하는 기능이 더 이상 보이지 않으므로 사용하지 않습니다. 요점은 디지털 지문 수집은 사용자를 다른 사용자와 은밀하게 구분하는 것입니다. 사용자가 이 사실을 알 준비가 된 경우 디지털 지문 수집 기술이 필요하지 않습니다. 사용자에게 계정을 생성하고 로그인하도록 합니다. 사용할 수 있습니다.
예측 불가능성 증가
경우에 따라 세 번째 접근 방식은 브라우저 공급업체가 API의 응답을 덜 세분화하여
식별이 어려워집니다 이는 데이터 모듈의 무작위 응답 메커니즘의 일부로 다음과 같이 설명되어 있습니다.
해야 합니다. 브라우저 공급업체
은 웹 앱과 서드 파티에 제공되는 API 데이터에 대해서도 이 접근 방식을 취할 수 있습니다. 이와 관련된 예로
페이지 성능을 측정하는 데 사용되는 매우 정확한 타이밍 API
window.performance.now()
부터 브라우저는 이 값을 알고 있습니다.
마이크로초 단위 정확도로 변환하지만, 반환되는 값은 가장 가까운 20마이크로초로 반올림하여 의도적으로 정밀도를 낮춥니다.
디지털 지문 수집에 사용되는 것을 피하도록 고안되었습니다 (또한 타이밍 공격을 피하기 위한 보안 목적). 여기서 목표는
는 API의 유용성을 유지할 수 있지만 응답의 식별이 덜하기 위한 것입니다. 본질적으로는 "무리 면역"을 제공하기 위함입니다. 이를 통해
내 기기가 나만 고유하지 않고 다른 사람의 기기처럼 보이게 합니다. Safari는 시스템 구성의 단순화된 버전을 제공합니다
바로 이것입니다.
개인 정보 보호 예산 시행
개인 정보 보호 예산은 각 디지털 지문 수집 표시 경로에서 드러나는 정보를 브라우저에서 추정하도록 제안하는 제안서입니다. 브라우저에서는 아직 구현되지 않았습니다. 목표는 사용자 개인 정보를 보호하면서 강력한 API를 허용하는 것입니다. 개인 정보 보호 예산 제안 자세히 알아보기
광범위한 테스트 환경 사용
이 모든 것은 앱과 서비스를 빌드하는 방식에 영향을 미칩니다. 특히 대응 방식과 접근 방식이 매우 다양합니다. 이 지역의 브라우저와 플랫폼에서 확인할 수 있습니다 즉, 작업을 여러 환경에서 테스트하는 것이 중요합니다. 물론 이는 항상 중요하지만 어떤 브라우저나 플랫폼에 관계없이 렌더링 엔진을 사용할 수 있습니다. 따라서 깜박임 기반 브라우저) 이는 명백하게 API를 사용하는 경우에는 그렇지 않습니다. 정확히 렌더링 엔진은 디지털 지문 수집에 대비하여 API 표면을 강화하는 방법에 따라 크게 다를 수 있습니다.
권장사항
- 자체 분석과 잠재고객을 확인하여 테스트할 때 우선순위를 지정해야 하는 브라우저 세트의 방향을 정하세요.
- Firefox, Chrome, Edge, 데스크톱의 Safari, Android의 Chrome 및 삼성 인터넷, Safari에서 사용할 수 있습니다. 이를 통해 세 가지 주요 렌더링 엔진 (Firefox의 Gecko, Blink의 다양한 포크)에서 테스트할 수 있습니다. Chrome, Edge, 삼성 인터넷, Safari의 Webkit 등입니다.
- 태블릿, 스마트시계, 게임 콘솔과 같이 일반적이지 않은 기기에서도 사이트를 사용할 수 있다면 해당 기기에서도 테스트해 보세요. 일부 하드웨어 플랫폼은 브라우저 업데이트 시 모바일 및 데스크톱보다 뒤처질 수 있습니다. 즉, 일부 API가 구현되지 않거나 해당 플랫폼의 브라우저에서 사용할 수 없습니다.
- 사용자 개인 정보 보호를 동기 부여로 주장하는 하나 이상의 브라우저에서 테스트해 보세요. 출시 전 및 테스트 버전 포함 Safari의 기술 미리보기, Chrome의 Canary, Firefox의 베타 채널 이렇게 하면 API 중단 및 변경사항이 영향을 미치기 전에 사이트에 영향을 미치는 변경사항을 식별할 수 있습니다. 얻는 것입니다 마찬가지로 사용자가 고려해야 합니다. 만약 사용자층에 구형 Android 휴대전화가 많습니다. 이러한 휴대전화를 테스트에 포함해야 합니다. 대부분의 사람들은 빠르게 하드웨어 및 최신 릴리스를 지원할 수 있습니다.
- 깨끗한 프로필과 시크릿/시크릿 브라우징 모드를 모두 사용하여 테스트합니다. 이미 광고 게재를 허용했을 가능성은 개인 프로필에 필요한 권한 어떤 질문에 대해 사이트 접근 권한을 거부하면 어떻게 되는지 테스트하세요.
- Firefox의 디지털 지문 보호에서 페이지를 명시적으로 테스트합니다. 있습니다. 이렇게 하면 페이지에서 디지털 지문 수집을 시도하는 경우 권한 대화상자가 표시되거나 일부 API의 경우 퍼징된 데이터가 반환됩니다. 이렇게 하면 내 서비스에 포함된 서드 파티가 디지털 지문 수집 가능 데이터를 사용하고 있는지, 아니면 자체 서비스가 디지털 지문 수집이 가능한 데이터를 사용하는지를 확인할 수 있습니다. 살펴봤습니다 그런 다음 의도적인 퍼징이 필요한 작업을 더 어렵게 만드는지 생각해 볼 수 있습니다. 다른 소스에서 해당 데이터를 얻거나, 데이터 없이 수행하거나, 덜 세부적인 데이터를 사용하기 위해 적절하게 수정합니다.
- 앞서 서드 파티 모듈에서 설명한 것처럼 서드 파티 API를 감사하는 것도
디지털 지문 수집 기술을 사용하고 있는지 확인합니다. 수동적 디지털 지문 수집은 감지하기 어렵고
제3자가 자체 서버에서 수행하는 경우에는 불가능함) 디지털 지문 수집 모드에서는 일부 디지털 지문 수집 기법을 플래그로 지정할 수 있습니다.
navgator.userAgent의 사용이나 예상치 못한
<canvas>
객체 생성을 찾으면 몇 가지 접근 방식이 나타날 수 있습니다. 어떤 것들이 있는지도 확인해야 합니다 '확률적 일치'라는 용어의 사용 사례를 찾아보는 것도 좋습니다. 마케팅에서 또는 제3자를 설명하는 기술 자료 이는 때때로 디지털 지문 수집 기법의 사용을 나타낼 수 있습니다.
교차 브라우저 테스트 도구
개인 정보 보호를 위해 코드를 테스트하는 것은 자동화하기 어렵고, 수동으로 테스트할 때 찾아야 할 사항은 앞에서 설명했습니다. 예를 들어 액세스하려는 모든 API의 사이트 권한을 거부하면 어떻게 되며, 사용자에게 어떻게 표시되나요? 자동 테스트에서는 사이트가 사용자의 신뢰를 주는 데 도움이 되는지, 또는 반대로 사용자가 신뢰하지 않도록 유도하는지를 판단할 수 없습니다. 무언가가 숨겨져 있다고 생각할 수도 있습니다.
하지만 사이트가 감사된 후 최신 브라우저 버전 (또는 출시 예정 '베타' '미리보기' 자동화될 수 있으며 대체로 기존 테스트 모음의 일부여야 합니다. 항목 자동화된 테스트 도구에서 API 노출 영역과 작업할 때 고려해야 할 점은 대부분의 브라우저에서 일정 수준의 사용 가능한 API와 기능을 제어할 수 있습니다 Chrome은 명령줄 스위치를 통해 이 작업을 수행합니다. Firefox와 마찬가지로, 테스트 도구에서 이들 항목에 액세스할 수 있어야 합니다. 설정을 사용하면 API를 끄거나 켜서 특정 테스트를 실행할 수 있습니다. 예를 들어 Cypress의 browser-launch 플러그인에서 방법에 대한 puppeteer의 launch.args 매개변수 를 사용하세요.)
대략적인 정보인 경우 사용자 에이전트 문자열만 사용합니다.
또 다른 예로, 브라우저는 웹이 시작된 이래로 HTTP 사용자-에이전트 헤더. 거의 오랫동안 사람들은 웹 개발자에게 user-agent 헤더의 콘텐츠를 사용하지 말라고 권고해 왔습니다. 웹 개발자들은 그때까지 웹 개발자들이 일정량의 웹 콘텐츠를 사용하여 다른 콘텐츠를 제공해 왔습니다. 일부 (전부는 아님) 사례에서 근거를 제시해야 합니다. 브라우저는 웹사이트에서 차선의 경험을 얻는 것을 원하지 않기 때문에 이렇게 하면 모든 브라우저가 다른 모든 브라우저인 것처럼 가장하고 user-agent 문자열은 다음과 같습니다.
Mozilla/5.0 (Linux; Android 6.0.1; SGP771 Build/32.2.A.0.253; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/52.0.2743.98 Safari/537.36
.
이 주장들은 무엇보다도 최초의 우주비행사가 우주비행사들이 에버린이 출시했던 브라우저인 Mozilla/5.0이라고 주장합니다. 20여 년 전 국제 우주 정거장에 승선했습니다. 사용자 에이전트 문자열은 디지털 지문 수집을 위한 풍부한 엔트로피 소스입니다. 디지털 지문 인식 가능성을 줄이기 위해 브라우저 제조업체는 이미 user-agent 헤더를 고정했거나 그렇게 하는 것이 목표입니다. 이는 API를 완전히 삭제하지 않고도 API가 제공하는 데이터를 변경하는 또 다른 예입니다. 빈 사용자 에이전트 헤더를 전송하면 이 헤더가 있다고 가정하는 수많은 웹사이트가 중단됩니다. 일반적으로 브라우저는 세부사항의 일부를 삭제한 다음 이후로는 거의 변경하지 않고 그대로 유지하는 것입니다. (이 작업은 Safari, Chrome, 및 Firefox). 이러한 상세 디지털 지문 수집은 기본적으로 사용자 에이전트 헤더가 정확한 것으로 신뢰해서는 안 되며, 그렇기 때문에 대체 데이터 소스를 찾는 것이 중요합니다.
명확하게 말하면 user-agent의 데이터가 완전히 사라지는 것은 아니지만 더 낮은 세부 수준에서 사용할 수 있거나 더 오래되었지만 변경되지 않은 숫자가 보고될 수 있기 때문에 가끔 정확하지 않습니다. 예: Firefox, Safari, Chrome 모두 대문자 사용 보고된 macOS 버전 번호를 10으로 설정합니다 (사용자 에이전트 문자열 축소에 관한 업데이트 참고). 참조). Chrome이 어떻게 사용자 에이전트 문자열의 데이터를 줄일 계획인지에 대한 정확한 세부정보는 사용자 에이전트 축소에서 확인할 수 있습니다. 간단히 말해 보고된 브라우저 버전 번호에는 메이저 버전만 포함되므로 브라우저 버전이 123.10.45.108이더라도 몇 개의 변하지 않는 선택지 중 하나에 고정합니다. 가상의 Chrome 버전 123.45.67.89가 가상의 'Windows 20' 다음과 같이 버전 번호를 보고합니다.
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/123.0.0.0 Safari/537.36
필요한 핵심 정보 (브라우저 버전)는 Windows의 Chrome 123에서도 계속 사용할 수 있습니다. 그러나 자회사는 정보 (칩 아키텍처, Windows 버전, 모방 중인 Safari 버전, 브라우저 마이너 버전) 정지 후에는 더 이상 사용할 수 없습니다.
이것을 '현재' 다른 플랫폼의 Chrome 사용자 에이전트:
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36
Chrome 버전 번호 (104)와 플랫폼 식별자만 다릅니다.
마찬가지로 Safari의 user-agent 문자열은 플랫폼과 Safari 버전 번호를 표시하며 iOS의 OS 버전도 제공합니다. 나머지는 모두 얼어 있습니다. 따라서 가상의 macOS 20에서 실행되는 가상의 Safari 버전 1234.5.67은 user-agent를 다음과 같이 제공할 수 있습니다.
Mozilla/5.0 (Macintosh; **Intel Mac OS X 10_20_0**) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.1 Safari/605.1.15
가상의 iOS 20에서는 다음과 같을 수 있습니다.
Mozilla/5.0 (iPhone; CPU **iPhone OS 20_0** like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/**20.0 Mobile/15E148 Safari/605.1.15**
.
다시 말하지만, 핵심 정보 (Safari, iOS 또는 macOS에 있음)를 사용할 수 있으며 iOS Safari는 여전히 iOS 버전 번호를 제공합니다. 그러나 과거에 사용할 수 있었던 많은 보조 정보는 그 이후 동결되었습니다. Safari 반드시 사용할 수 있는 것은 아닙니다.
신고된 사용자 에이전트에 대한 변경사항에 대한 논란이 뜨거웠습니다. https://github.com/WICG/ua-client-hints#use-cases summarises 요약 로완 메어우드가 제시하는 슬라이드 자료 에서 UA 클라이언트 힌트 제안의 맥락에서 차별화를 위해 user-agent를 사용하는 것에서 벗어날 수 있는 몇 가지 전략을 소개합니다.
퍼징
퍼징은 보안 관행에서 사용되는 용어로, API가 예기치 않은 값을 사용하여 이러한 값을 처리할 수 있기를 기대하며
잘못되어 보안 문제를 야기할 수 있습니다. 웹 개발자는 교차 사이트 스크립팅 (XSS),
이 경우 페이지에 삽입된 HTML을 올바르게 이스케이프하지 않기 때문에 페이지에 악성 스크립트를 추가해야 합니다. 따라서
그 안에 <script>
텍스트가 들어 있는 경우). 백엔드 개발자는 SQL 삽입,
여기서 사용자 입력을 올바르게 검증하지 않는 데이터베이스 쿼리는 보안 문제를 노출시킵니다 (주로
Little Bobby Tables). 퍼징, 즉 퍼징 테스트가 더 적합합니다.
API에 다양한 유효하지 않거나 예상치 못한 입력을 제공하고 보안 유출 결과를 확인하려는 자동화된 시도에 사용됩니다.
비정상 종료 또는 기타 잘못된 처리가
발생할 수 있습니다 모두 고의로 부정확한 정보를 제공하는 예입니다. 하지만 여기에서는
(user-agent를 의도적으로 잘못 만들어) 브라우저에서 사전에 데이터 의존하지 않도록 독려합니다.
권장사항
- 코드베이스에서 사용자 에이전트 문자열에 대한 의존성이 있는지 확인합니다.
navigator.userAgent
를 검색하면 가장 많이 일치하는 항목을 찾을 수 있습니다. 를 사용하고, 백엔드 코드는 다음을 포함하여User-Agent
헤더로 찾을 가능성이 높습니다. 종속 항목이 포함됩니다 - 자체 코드에서 용도를 찾은 경우 코드에서 확인하는 내용을 파악하고 이를 차별화할 다른 방법을 찾습니다. 대체 종속 항목을 찾거나 문제를 신고하거나 업데이트를 확인하여 종속 항목 업스트림으로 작업합니다. 가끔 버그를 해결하기 위해서는 브라우저 차별화가 필요하지만, 고정 후에는 user-agent가 점점 더 이를 수행할 방법이 될 것입니다.
- 무사할지도 몰라. 브랜드, 메이저 버전 및 플랫폼의 핵심 가치만 사용한다면 이 가치는 거의 그대로일 것입니다. user-agent 문자열에서 정확해야 합니다.
- MDN에서는 사용자 에이전트 문자열('브라우저 스니핑')에 의존하지 않도록 하는 좋은 방법을 설명합니다. 주요 기능은 특성 감지입니다
- 어떤 식으로든 user-agent 문자열에 의존하는 경우 (유용한 소수의 핵심 값을 사용하는 경우에도) 좋습니다. 새로운 브라우저 릴리스에 포함될 예정된 user-agent로 테스트하는 아이디어를 얻었습니다. 출시 예정인 브라우저에서 베타 또는 기술 미리보기 빌드를 통해 버전 자체를 확인할 수 있지만, 맞춤 사용자 에이전트 문자열을 설정하여 있습니다. Chrome, Edge에서 사용자 에이전트 문자열을 재정의할 수 있습니다. Firefox 및 Safari, 를 사용하여 코드가 사용자로부터 받을 수 있는 다양한 user-agent 값을 어떻게 처리하는지 확인합니다.
클라이언트 힌트
이 정보를 제공하기 위한 주요 제안으로는 사용자 에이전트 클라이언트 힌트가 있습니다.
일부 브라우저에서만 지원됩니다. 지원되는 브라우저는 세 개의 헤더 Sec-CH-UA
를 전달하며, 이 헤더는
브라우저 브랜드 및 버전 번호 Sec-CH-UA-Mobile
: 휴대기기에서 요청의 출처인지 나타냅니다. Sec-CH-UA-Platform
님,
운영체제 이름을 지정합니다 이 헤더는
단순한 문자열이 아닌 구조화된 헤더를 사용합니다.
이는 브라우저에서 값이 포함되므로 제대로 파싱되지 않으면 잘못 처리됩니다. 이것은 다음과 같습니다.
브라우저가 사전에 수행하는 '퍼징 테스트'의 예입니다. 이 데이터를 사용하는 개발자는
데이터를 부적절하게 또는 지연 파싱하면 좋지 않은 결과를 제공할 가능성이 크므로(예:
있는 경우 또는 제대로 닫히지 않는 문자열). 다행히 이 데이터는 브라우저에서
navigator.userAgentData
는 지원되는 브라우저에서 다음 객체와 같이 표시될 수 있습니다.
{
"brands": [
{
"brand": " Not A;Brand",
"version": "99"
},
{
"brand": "Chromium",
"version": "96"
},
{
"brand": "Google Chrome",
"version": "96"
}
],
"mobile": false
}