설명
외부 스크립트나 스타일시트를 신뢰한 해시와 비교하지 않고 로드하면, 제공 서버가 침해되었을 때 변조된 콘텐츠가 적용될 수 있습니다. Subresource Integrity(SRI)는 지원되는 script와 link 요소에서 파일 내용이 지정한 해시와 일치하는지 확인합니다. 해시가 일치해도 파일 자체가 안전하다는 뜻은 아닙니다.
잠재적 영향
- Content Manipulation (컨텐츠 변조): 외부 리소스를 변조하여 악의적인 코드 실행을 유발할 수 있습니다.
해결 방법
- SRI를 지원하는 외부 스크립트·스타일시트에 신뢰한 파일 내용으로 계산한
integrity값을 지정하세요. 파일을 업데이트할 때는 해시도 갱신하세요. - 다른 출처의 리소스에는
crossorigin설정과 리소스 서버의 적절한 CORS 응답이 필요합니다.
예시
변경 전
html
<script src="https://example.com/script.js"></script>
변경 후
URL과 해시는 형식 예시입니다. 실제 배포할 파일에서 계산한 해시로 바꾸세요.
html
<script
src="https://example.com/script.js"
integrity="sha384-OgVRvuATPupdUSgWVsKllsZZAgvFiTpjlPdSdj0eGVcI/A5efowlBbInEKwdsA5l"
crossorigin="anonymous"
></script>
설명:
- 변경 전: 예상한 파일 해시와 비교하지 않고 외부 스크립트를 로드합니다.
- 변경 후: 지원하는 브라우저는 파일 해시가 일치하지 않으면 실행을 차단합니다. 예시의 해시와 URL을 그대로 사용해서는 실제 파일의 무결성을 확인할 수 없습니다.