교차 출처 대상 링크가 안전하지 않음

target="_blank" 속성을 사용하여 다른 사이트의 페이지를 링크하는 경우 사이트를 성능 및 보안 문제에 노출할 수 있습니다.

  • 다른 페이지가 내 페이지와 동일한 프로세스에서 실행될 수도 있습니다. 다른 페이지에서 많은 자바스크립트를 실행 중인 경우 페이지의 성능이 저하될 수 있습니다.
  • 다른 페이지에서는 window.opener 속성을 사용하여 window 객체에 액세스할 수 있습니다. 이로 인해 다른 페이지가 내 페이지를 악성 URL로 리디렉션할 수 있습니다.

rel="noopener" 또는 rel="noreferrer" 추가 중 이러한 문제를 target="_blank" 방지할 수 있습니다.

Lighthouse 교차 출처 대상 감사가 실패하는 경우

Lighthouse는 교차 출처 대상의 안전하지 않은 링크에 플래그를 지정합니다.

교차 출처 대상에 대한 안전하지 않은 링크를 보여주는 Lighthouse 감사

Lighthouse는 다음 프로세스를 사용하여 안전하지 않은 링크를 식별합니다.

  1. target="_blank" 속성이 포함된 모든 <a> 태그를 수집합니다. rel="noopener" 또는 rel="noreferrer" 속성은 제외하세요.
  2. 동일한 호스트 링크를 필터링합니다.

Lighthouse는 동일한 호스트 링크를 필터링하기 때문에 대규모 사이트에서 작업하는 경우 알아야 하는 예외적인 케이스가 있습니다. 한 페이지에 rel="noopener"를 사용하지 않고 사이트의 다른 페이지로 연결되는 target="_blank" 링크가 포함된 경우 이 감사가 성능에 미치는 영향은 계속 적용됩니다. Lighthouse 결과에는 이러한 링크가 표시되지 않습니다.

사이트 성능을 개선하고 보안 취약점을 방지하는 방법

rel="noopener" 또는 rel="noreferrer" 추가 Lighthouse 보고서에 표시된 각 링크에 적용됩니다 일반적으로 target="_blank"를 사용할 때는 항상 rel="noopener" 또는 rel="noreferrer"를 추가합니다.

<a href="https://examplepetstore.com" target="_blank" rel="noopener">
  Example Pet Store
</a>
  • rel="noopener"로 인해 새 페이지가 다음 작업을 할 수 없습니다. window.opener 속성에 액세스하고 별도의 프로세스에서 실행되도록 합니다
  • rel="noreferrer"도 같은 효과입니다. 또한 Referer 헤더가 새 페이지로 전송되지 않습니다 링크 유형 'noreferrer'를 참고하세요.

교차 출처 리소스를 안전하게 공유를 참조하세요. 참조하세요.

리소스