호스트 이름을 먼저 읽으세요
URL은 스킴(scheme), 사용자 정보, 호스트, 포트, 경로, 쿼리 및 프래그먼트를 포함할 수 있습니다. 호스트명은 목적지 이름을 식별하며, 경로 또는 쿼리 내의 단어는 운영자를 식별하지 않습니다. 예를 들어, https://example.net/bank-login에서 bank-login은 example.net의 경로입니다.
@ 기호는 사용자 정보를 나타낼 수 있습니다. https://[email protected]/ 에서 목적지 호스트명은 trusted-name이 아닌 example.net입니다. 원본 문자열을 보존한 다음, 단순히 링크를 눈으로 읽기보다는 표준을 인식하는 파서를 사용하십시오.
인코딩 및 국제화된 이름
퍼센트 인코딩은 경로와 쿼리의 문자를 숨길 수 있습니다. 국제화된 이름은 xn--으로 시작하는 푸니코드(Punycode)를 사용하여 표현될 수 있습니다. 해석을 위해 디코딩하되 원본 텍스트는 변경하지 마십시오. 유사하게 보이는 유니코드 문자가 반드시 동일한 것은 아닙니다.
쿼리 문자열에는 로그인 토큰, 식별자 또는 개인 데이터가 포함될 수 있습니다. 승인 없이 완전하고 민감한 URL을 공개 분석 서비스에 보내지 마십시오. 프래그먼트(fragment)는 일반적으로 HTTP 요청의 일부로 전송되기보다는 브라우저에서 처리됩니다.
안전한 초기 분류
오프라인 파싱과 공개 DNS 또는 등록 정보 조회를 통해 시작하십시오. 일반 브라우저로 의심스러운 목적지를 방문하지 마십시오. 파서는 URL을 설명할 뿐, 목적지가 안전하다고 인증하지 않습니다.
- 원본 메시지 또는 아티팩트에 원본 URL을 보관하십시오.
- 스키마, 호스트, 포트, 경로 및 쿼리를 개별적으로 식별합니다.
- 사용자 정보, 유사 도메인 및 인코딩된 문자를 확인하십시오.
- 외부 제출에 사용되는 복사본에서만 민감한 데이터를 제거합니다.
