window.crypto.subtle
가 HTTPS 환경에서만 사용 가능한 이유window.crypto.subtle
API는 웹 애플리케이션에서 암호화, 해싱, 서명 등의 보안 기능을 수행하는 Web Cryptography API의 일부입니다. 그러나 이 API는 보안이 보장되는 환경에서만 사용할 수 있도록 제한되어 있으며, localhost
를 제외한 모든 환경에서는 HTTPS에서만 동작합니다. 이러한 제한이 존재하는 이유를 설명합니다.
웹 브라우저는 보안이 유지되는 환경에서만 특정 기능을 사용할 수 있도록 제한하는 보안 컨텍스트(Secure Context) 개념을 도입했습니다. 보안 컨텍스트는 웹 페이지가 HTTPS를 통해 제공되거나, localhost
와 같은 신뢰할 수 있는 환경에서 실행될 때 활성화됩니다. window.crypto.subtle
API는 보안 컨텍스트에서만 사용할 수 있는 기능 중 하나로, 이는 안전한 암호화 연산을 보장하기 위한 조치입니다.
window.crypto.subtle
은 암호화 키 생성 및 서명 검증과 같은 중요한 보안 작업을 수행합니다. HTTP 환경에서는 네트워크 트래픽이 암호화되지 않아, 공격자가 중간자 공격을 통해 중요한 데이터를 탈취하거나 변조할 수 있습니다. 따라서 브라우저는 신뢰할 수 있는 HTTPS 환경에서만 이 API를 허용합니다.
HTTPS는 웹사이트에서 제공하는 JavaScript 파일이 중간에서 변조되지 않았음을 보장합니다. 만약 HTTP 환경에서도 crypto.subtle
API를 허용한다면, 악성 코드가 주입될 위험이 커지고, 보안 키 또는 민감한 데이터가 노출될 가능성이 높아집니다.
암호화 API는 주로 사용자 데이터의 보안을 강화하는 목적으로 사용됩니다. HTTP 환경에서는 보안이 보장되지 않으므로, 민감한 정보를 암호화 및 해독하는 과정에서 데이터가 안전하지 않은 상태로 유출될 가능성이 있습니다. HTTPS 환경에서는 TLS(전송 계층 보안)를 통해 데이터의 무결성과 기밀성이 유지됩니다.
localhost
예외 허용 이유웹 개발 중에는 HTTPS 환경을 설정하지 않은 로컬 개발 서버를 사용할 수 있습니다. 이 경우에도 crypto.subtle
API를 사용할 수 있도록 브라우저는 localhost
에서 예외적으로 API 접근을 허용합니다. 이는 개발자들이 보안 기능을 테스트할 수 있도록 지원하기 위한 정책입니다.
window.crypto.subtle
API가 HTTPS 환경에서만 사용 가능한 이유는 보안 강화를 위한 조치입니다. 이는 보안 컨텍스트를 기반으로 하며, 중간자 공격 방지, 스크립트 변조 방지, 사용자 데이터 보호 등의 목적을 가지고 있습니다. 개발 환경에서는 localhost
에서 예외적으로 허용되지만, 실제 배포 시에는 반드시 HTTPS를 사용하여 API를 정상적으로 동작하도록 해야 합니다.
참조
보안 컨텍스트