비공개 네트워크 액세스: 웹 작업자 및 탐색 가져오기에 대한 확장된 보호

Jonathan Hao
Jonathan Hao

비공개 네트워크 액세스란 무엇인가요?

비공개 네트워크 액세스 (PNA, 이전 명칭: CORS-RFC1918, 줄여서 로컬 네트워크 액세스)는 웹사이트에서 비공개 네트워크의 서버로 요청을 전송하는 기능을 제한하는 보안 기능입니다. 이를 통해 교차 사이트 요청 위조 (CSRF)와 같은 잠재적 공격으로부터 사용자와 내부 네트워크를 보호할 수 있습니다. Chrome은 점진적으로 PNA를 구현해 왔으며, 향후 릴리스에서는 보호 기능이 확장될 예정입니다.

주요 PNA 보호 (현재 상태 포함)

  • 보안 컨텍스트: 보안 컨텍스트만 비공개 네트워크 하위 리소스 요청을 할 수 있습니다 (Chrome 94부터 적용). 자세한 내용은 비공개 네트워크 액세스 업데이트 게시물을 참고하세요.
  • 실행 전 요청: Chrome은 비공개 네트워크 하위 리소스 요청보다 먼저 실행 전 요청을 전송하여 서버 권한을 확인합니다 (Chrome 104 이후 실패에 대한 DevTools의 경고, Chrome 130에서 적용됨). 이 내용은 비공개 네트워크 액세스: 프리플라이트 소개에서 설명했습니다. Chrome 123부터 PNA로 인해 프리플라이트만 생성되고 전송되는 경우 Chrome에서 Accept와 같은 일부 CORS 헤더가 생략됩니다.
  • 동일 출처 예외: Chrome 115부터 신뢰할 수 있는 출처의 동일 출처 요청은 PNA 제한에서 제외됩니다.

확장된 보호: 웹 작업자

PNA 보호는 웹 작업자 (전담 작업자, 공유 작업자, 서비스 작업자)까지 확대됩니다. 여기에는 다음과 같은 콘텐츠가 포함됩니다.

  • 작업자 스크립트 가져오기: 공개 상태가 아닌 IP 주소의 보안 컨텍스트와 프리플라이트가 필요합니다. Chrome 110 이후 경고가 Chrome 130에서 시행됩니다.
  • 작업자 스크립트에서 시작된 가져오기: 작업자 스크립트 내의 모든 가져오기는 동일한 PNA 규칙을 따릅니다.

Chrome 124부터 다음 단계에 따라 시행을 테스트할 수 있습니다.

  • chrome://flags/#private-network-access-ignore-worker-errors 사용 중지
  • chrome://flags/#private-network-access-respect-preflight-results 사용 설정

확장된 보호: 탐색 가져오기

PNA는 CSRF 공격에서 사용될 가능성이 있기 때문에 탐색 가져오기 (iframe, 팝업)에도 적용됩니다. Chrome 123부터 실패에 대한 경고가 표시되기 시작했으며 Chrome 130부터 시행될 예정입니다.

Chrome 124부터 다음을 통해 시행을 테스트할 수 있습니다.

  • chrome://flags/#private-network-access-ignore-navigation-errors 사용 중지
  • chrome://flags/#private-network-access-respect-preflight-results 사용 설정

PNA에서 탐색 요청을 차단하면 사용자에게 수동으로 새로고침하고 요청을 허용할 수 있는 옵션과 함께 특정 오류가 표시됩니다.

PNA에서 탐색 요청을 차단하면 사용자에게 수동으로 새로고침하고 요청을 허용할 수 있는 옵션과 함께 특정 오류가 표시됩니다.
PNA에서 탐색 요청을 차단하면 수동으로 새로고침하고 요청을 허용하는 옵션과 함께 특정 오류가 표시됩니다.

웹사이트가 영향을 받는 경우 어떻게 해야 하나요?

비공개 네트워크 액세스: 프리플라이트 소개 게시물에 가이드가 포함되어 있습니다. 내비게이션 요청의 경우:

  • Access-Control-Allow-Origin은(는) 와일드 카드("*")일 수 없습니다.
  • Access-Control-Allow-Credentials"true"로 설정해야 합니다.

다음 단계

  • WebSockets: Chrome 126부터는 잠정적으로 PNA에서 WebSocket 핸드셰이크를 처리합니다 (경고 먼저 표시).
  • 완전한 시행: 모든 PNA 제한이 Chrome 130에서 잠정적으로 시행 (규정을 준수하지 않는 요청 차단)됩니다. 신뢰할 수 있는 사이트의 경우 사용자에게 PNA를 재정의할 수 있는 사이트 설정이 제공됩니다.

비공개 네트워크 사용 사례에 대한 의견

공개 네트워크의 요청이 필요한 비공개 네트워크에서 웹사이트를 호스팅하는 경우 Chrome팀은 사용자의 의견을 듣고자 합니다. Chromium Issue Tracker (구성요소: Blink>SecurityFeature>CORS>PrivateNetworkAccess)에서 문제를 신고합니다.

사진: 자쿠브 지르지키(Unsplash 제공)