1

크롬 확장에서 subresource-integrity를 ​​통해 스크립트/스타일 시트가 무결성 보호되는지 여부를 확인할 수 있습니까?크롬 확장의 요청이 서브 리소스 무결성인지 확인

요청이 시작되기 전에이 사실을 알고 싶습니다. 따라서 chrome.webRequest.onBeforeRequest을 사용해야합니다. 그러나 SRI는 브라우저 측면이므로 요청에 대한 힌트를 제공하지 않습니다. 요청이 완료되면 모든 것이 발생합니다.

이 정보를 얻는 유일한 방법은 DOM에 직접 액세스하는 것입니다. 이것은 html이 완전히 파싱 될 때까지 모든 요청을 처리해야한다는 것을 의미합니다.

크롬 확장 프로그램의 어느 곳에서도 찾을 수 없었기 때문에 SRI가 확장 기능에 액세스하기에는 너무 새로운 것일 수도 있습니다.

+2

FWIW "run_at": "document_start"가 삽입 된 콘텐츠 스크립트에서 MutationObserver를 사용하여 페이지로드 중에 DOM에 추가 된 리소스를 잡을 수 있습니다. – wOxxOm

답변

2

예, 리소스가 지정되기 전에 리소스가 지정되어있는 요소에서 적절한 속성 (예 : integrity)을 확인하여 리소스가 요청되기 전에 subresource-integrity으로 보호되는지 확인할 수 있습니다. DOM에 추가되었습니다. content scriptdocument_start (manifest.json (run_at)으로 지정되거나 tabs.executeScript() (runAt))로 실행될 수 있습니다. 그 스크립트는 DOM에 배치되는 요소를보기 위해 MutationObserver을 설정할 수 있습니다. 적절한 요소 유형 (즉, <script><link>)은 하위 리소스 무결성을 사용하는지 확인해야합니다. 이 확인/결정은 webRequest.onBeforeRequest 이벤트 이전에 발생합니다.

이렇게하면 HTML이 완전히 구문 분석 될 때까지 모든 요청이 지연되지 않습니다. 자원을 지정하는 각 요소가 DOM에 입력 될 때 검사를 수행합니다. 반면에, MutationObserver를 사용하여 추가로 처리하는 추가 처리는 HTML을 파싱하고 DOM을 만들고 모든 리소스를로드하는 데 약간의 시간을 추가합니다.


  1. 스크립트 document_starttabs.executeScript()를 사용에서 실행 한 것으로 정확한 타이밍을 얻기 비 간단하다. 그렇게하는 방법은 별도의 질문이 될 것입니다.
관련 문제