줍줍 분석기는 외부 스크립트와 스타일에 SRI 해시가 있는지 확인한다. 외부 파일을 가르는 코드 때문에 페이지와 출처가 같은 파일도 검사 결과에 잡혔다.
HTTP(S) 절대 URL을 외부로 분류했다
이전 코드는 src나 href가 //로 시작하거나 http://·https://로 시작하면 외부 자원으로 분류했다. 페이지 주소는 비교하지 않았다.
페이지와 파일이 같은 https://example.com에 있어도 HTML에 절대 URL을 쓰면 SRI 검사로 들어갔다. 같은 파일인데 상대경로로 쓰면 지나갔고, 절대 URL로 쓰면 잡혔다.
https://example.com/articlehttps://example.com/static/main.js 이전 코드에서는 검사 대상이었다. 수정 후에는 제외된다.
https://cdn.example.com/lib.js 수정 전후 모두 검사 대상이다.
페이지와 파일의 origin을 비교한다
origin은 URL의 스킴, 호스트, 포트로 정해진다. 같은 도메인처럼 보여도 http와 https는 origin이 다르고, 하위 도메인도 별도 origin이다.
수정한 함수는 파일 URL을 페이지 URL 기준으로 해석한 뒤 두 origin을 비교한다. 상대경로와 절대 URL을 같은 기준으로 처리하고, HTTP(S)가 아닌 URL은 검사하지 않는다.
if (src.startsWith('//')) return true;
if (/^https?:\/\//i.test(src)) return true; const resource = new URL(src, base);
return resource.origin !== base.origin; SRI는 파일 내용의 해시를 확인한다
SRI(Subresource Integrity)가 설정된 스크립트나 스타일을 받으면 브라우저는 실행하거나 적용하기 전에 파일 내용과 integrity의 해시를 비교한다. 파일이 바뀌어 해시가 맞지 않으면 로드를 막는다.
같은 출처의 파일에도 SRI를 쓸 수 있다. 다만 교차 출처 파일에 SRI를 적용하려면 서버가 CORS를 허용해야 하고, 마크업에는 보통 crossorigin을 함께 쓴다. 이 조건은 W3C SRI 규격에도 명시돼 있다.
동일 출처와 교차 출처 자원 모두 integrity를 사용할 수 있다.
SRI로 보호하는 교차 출처 요청에는 CORS가 필요하다.
줍줍 분석기는 교차 출처 스크립트·스타일을 확인한다. Google Fonts처럼 동적으로 달라지는 일부 호스트는 제외한다.
같은 출처 URL을 테스트에 넣었다
테스트에도 이 사례를 넣었다. 절대 URL로 적힌 동일 출처 스크립트에서는 이슈가 나오지 않아야 한다. 외부 스크립트, 올바른 SRI, 상대경로, 동일 출처 절대 URL, 제외 호스트, 외부 스타일시트를 다루는 6개 테스트가 통과했다.
REGRESSION TEST
it('does NOT emit for an absolute same-origin script URL', () => {
const ctx = buildCtx(
'<script src="https://example.com/static/main.js"></script>'
);
expect(scriptSriAnalyzer.run(ctx)).toEqual([]);
}); 1 TEST FILE · 6 TESTS PASSED 11시 56분에 코드를 커밋했다. 12시 7분에 동결한 줍줍 분석기 v2.3.2 패키지의 content.js에도 origin 비교가 들어 있다.
421deb0a4893622baa11034/36은 수정 전 기록으로 남겼다
SIGNAL 001에 실린 34/36은 바꾸지 않았다. 2026년 8월 24~30일 분석은 수정 전 코드로 이뤄졌고, 당시 로그에는 판정 ID만 남았다. 검사에 걸린 파일 URL은 저장하지 않았다.
같은 출처 파일이 34곳 중 몇 곳에 섞였는지는 현재 로그로 다시 셀 수 없다. 34/36은 수정 전 판정이 남긴 기록이다. 새 규칙이 적용된 결과와 바로 이어서 비교하기도 어렵다.
HISTORICAL SIGNAL
34/36 수정 전tech.script-no-sri 판정이 남은 도메인 새 규칙으로 소급 계산한 수치가 아니다. ZUPZUP LOG · 2026.09.01
SRI 검사에서 같은 출처 파일을 제외했다
- 절대 URL 형식 대신 페이지와 파일의 origin을 비교한다.
- 같은 출처 절대 URL이 이슈를 만들지 않는 회귀 테스트를 추가했다.
- 검사 문구에 같은 출처 파일과 동적 자원이 대상이 아니라는 범위를 적었다.
- 수정된 코드를 줍줍 분석기 v2.3.2 동결 패키지에서 확인했다.
SOURCES
- MDN · Subresource Integrity
- W3C · Subresource Integrity
- MDN · Origin
- ZUPZUP
script-sri.ts· 회귀 테스트 · v2.3.2 동결 패키지