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

Jonathan Hao
Jonathan Hao

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

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

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

  • 안전한 컨텍스트: 안전한 컨텍스트만 비공개 네트워크 하위 리소스 요청을 할 수 있습니다 (Chrome 94부터 시행됨). 자세한 내용은 비공개 네트워크 액세스 업데이트 게시물을 참고하세요.
  • 프리플라이트 요청: Chrome은 비공개 네트워크 하위 리소스 요청 전에 프리플라이트 요청을 전송하여 서버 권한을 확인합니다 (Chrome 104부터 실패에 대한 DevTools 경고, Chrome 130에서 시행됨). 이는 비공개 네트워크 액세스: 프리플라이트 소개에 설명되어 있습니다. Chrome 123부터 PNA로 인해 프리플라이트가 생성되고 전송된 경우에만 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야쿠프 젤르치키