SRI 해시 생성
Subresource Integrity Hash
붙여넣거나 올린 스크립트·스타일시트의 Subresource Integrity 속성(sha256/384/512)을 계산합니다.
CDN을 가리키는 `<script src>`는 그 CDN이 사용자 브라우저에서 어떤 코드든 실행해도 좋다는 상시 허가입니다. Subresource Integrity 속성은 그 허가를 거둡니다. 지정한 해시와 다른 파일이면 브라우저가 실행을 거부합니다.
배포할 파일을 그대로 놓으세요
실제로 서비스할 스크립트나 스타일시트여야 합니다. 있는 그대로 해시합니다.
브라우저의 WebCrypto로 해시하며, 브라우저가 검사할 때 쓰는 것과 같은 다이제스트입니다. 주소 입력란을 일부러 두지 않았습니다. 이 페이지에서 원격 파일을 받아 해시하려면 CORS에 막히거나 SSRF 통로가 되고, 브라우저는 서버처럼 호스트를 해석한 뒤 고정할 수 없습니다. 실제로 배포할 파일을 넣으십시오.
사용 방법
파일이나 주소를 넣습니다
실제로 배포할 파일을 놓거나 주소로 받아 옵니다. 해시는 바이트를 대상으로 하므로 줄바꿈 하나만 달라도 다른 값이 나옵니다.
속성 전체를 복사합니다
결과는 `integrity="sha384-…"` 형태입니다. 태그에 붙이면서 `crossorigin="anonymous"`도 함께 넣으십시오. 이것이 없으면 교차 출처 자원은 불투명해서 무결성을 검사할 수 없습니다.
움직이는 태그가 아니라 버전을 고정합니다
`@latest` 주소에 무결성 속성을 걸면 CDN이 새 버전을 올리는 날 사이트가 멈춥니다. 정확한 버전을 가리키고 둘을 함께 갱신하십시오.
자주 묻는 질문
어떤 알고리즘을 써야 하나요?
sha384가 통상적인 선택이고 대부분의 CDN이 그렇게 공개합니다. sha256도 되고 sha512는 더 강하지만, 이 설계에서 약한 고리는 알고리즘이 아니라 잘못된 버전을 고정하는 일입니다.
속성을 넣었더니 스크립트가 안 불러와집니다.
거의 항상 셋 중 하나입니다. CDN에서 파일이 바뀌었거나, `crossorigin="anonymous"`가 빠졌거나, 실제 제공되는 것과 다른 빌드(압축본과 비압축본 같은)에서 해시를 뜬 경우입니다.
원래부터 악성이던 스크립트도 SRI로 막히나요?
막히지 않습니다. 고정한 바이트를 그대로 받는다는 보장일 뿐입니다. 고정한 버전에 이미 뒷문이 있었다면 SRI는 그 뒷문을 매번 충실히 전달합니다.
이 도구로 이어지는 것
파일 체크섬 확인
File Checksum
크기에 상관없이 파일을 스트리밍으로 해시하고 붙여넣은 기대값과 대조합니다.
CSP 정책 생성
CSP Builder
안내 양식이나 위반 리포트를 바탕으로 CSP를 만들고 각 지시어의 의미를 설명합니다.
비밀번호 생성기
Password Generator
길이·문자 종류·헷갈리는 글자 제외 규칙을 정해 무작위 비밀번호를 필요한 만큼 만듭니다.
패스프레이즈 생성기
Passphrase Generator
단어 목록에서 다이스웨어 방식 패스프레이즈를 만들고 비트 단위 엔트로피를 보여 줍니다.
다음 단계
이 도구의 결과를 그대로 받을 수 있는 도구들입니다.
CSP 정책 생성
CSP Builder
안내 양식이나 위반 리포트를 바탕으로 CSP를 만들고 각 지시어의 의미를 설명합니다.
파일 체크섬 확인
File Checksum
크기에 상관없이 파일을 스트리밍으로 해시하고 붙여넣은 기대값과 대조합니다.
보안 헤더 점검
Security Header Scan
사이트의 HSTS·CSP·프레임·리퍼러·권한 헤더를 채점하고 무엇을 추가해야 할지 알려 줍니다.
의심 링크 확인
Suspicious URL Check
링크를 열기 전에 주소 형태(혼동 글자·IP 호스트·@ 속임수·깊은 서브도메인·이상한 포트·단축 서비스)를 검사하고, 원하면 리다이렉트 경로와 도메인 등록 시점을 확인합니다. 평판 데이터베이스는 없습니다.
Base64 인코딩·디코딩
Base64 Encoder & Decoder
텍스트와 파일을 Base64·Base64URL로 인코딩·디코딩하며 UTF-8을 올바르게 처리합니다.
유출 여부 확인
Breach Check
비밀번호가 Have I Been Pwned 유출 데이터에 있는지 확인합니다. 브라우저에서 SHA-1 해시의 앞 5자만 보내는 k-익명성 방식입니다.