스크립트 태그 무결성 속성
2174 단어 htmljavascriptsecurity
문제
해당 웹 사이트의 CDN 서버 중 하나가 해킹되고 해커가 JS 파일 중 하나에 일부 악성 코드를 추가했다고 가정하면 클라이언트는 민감한 정보를 해커에게 노출할 위험이 있습니다.
그렇다면 이런 일이 발생하지 않도록 하려면 어떻게 해야 할까요?
브라우저는 이 JS 파일이 악의적이거나 변조된 것임을 어떻게 알 수 있습니까?
해결책
이 문제를 해결하기 위해 대부분의 브라우저는 스크립트 태그에서
integrity
속성이라는 새 속성을 지원하기 시작했습니다.예시:
<script src="main.js" type="text/javascript" integrity="sha265-XU3HpWw3sNnYKqNWosvZyNN7HMyCOJGOrf1t5CLuuBc=" ></>
integrity
속성에는 두 부분이 있습니다. 첫 번째 부분은 알고리즘(sha256
또는 sha384
등)이고 두 번째 부분은 알고리즘에 의해 생성된 hash
입니다.integrity="{algorithm}-{hash}"
이 해시를 생성하는 방법은 무엇입니까?
기본적으로 이
hash
는 임의의 문자열이 아니며 JS 파일에 대해 생성됩니다. 이 해시는 JS 파일마다 다릅니다. JS 파일에 대한 hash
는 아래 명령을 사용하여 생성할 수 있습니다.명령:
shasum -b -a 265 main.js | awk '{ print $1 }' | xxd -r -p | base64
이 명령의 출력은 스크립트 태그의 무결성 속성에 추가됩니다. JS 파일이 업데이트될 때마다 새 파일
hash
을 생성합니다.실시간 개발에서는
hash
를 수동으로 생성할 필요가 없습니다. webpack
또는 rollup
와 같은 대부분의 최신 번들러는 이제 JS 파일에 대한 hash
생성을 지원하고 관련 스크립트 태그에 추가합니다.브라우저는 어떻게 유효성을 검사합니까?
브라우저가 JS 파일 다운로드를 완료하면 동일한 알고리즘(
sha256
또는 sha384
)을 사용하여 동일한 파일에 대해 hash
를 생성합니다.이제 브라우저는 생성된
hash
와 무결성 속성에 있는 hash
를 비교합니다.비교에 실패하면 브라우저는 해당 JS 파일의 실행을 허용하지 않습니다.
이 개념은 서버와 클라이언트 간에 데이터 무결성을 유지하려는 경우 모든 나머지 API에 적용할 수 있습니다.
Reference
이 문제에 관하여(스크립트 태그 무결성 속성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jppradhan/script-tag-integrity-attribute-37e7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)