🤖

본 콘텐츠의 이미지 및 내용은 AI로 생성되었습니다.

⚠️

본 콘텐츠의 이미지 및 내용을 무단으로 복제, 배포, 수정하여 사용할 경우 저작권법에 의해 법적 제재를 받을 수 있습니다.

이미지 로딩 중...

HTTPS 최신 기능 소개 - 슬라이드 1/11
A

AI Generated

2025. 11. 5. · 10 Views

HTTPS 최신 기능 소개

현대 웹 보안의 핵심인 HTTPS의 최신 기능들을 알아봅니다. HTTP/3, TLS 1.3, 보안 헤더 등 실무에서 바로 적용할 수 있는 최신 HTTPS 기술을 코드 예제와 함께 소개합니다.


카테고리:JavaScript
언어:JavaScript
메인 태그:#JavaScript
서브 태그:
#HTTPS#Security#WebAPI#NetworkSecurity

들어가며

이 글에서는 HTTPS 최신 기능 소개에 대해 상세히 알아보겠습니다. 총 10가지 주요 개념을 다루며, 각각의 개념에 대한 설명과 실제 코드 예제를 함께 제공합니다.

목차

  1. HTTP_Strict_Transport_Security
  2. Content_Security_Policy
  3. TLS_1_3_적용
  4. Fetch_API_HTTPS_요청
  5. HTTPS_리다이렉트_미들웨어
  6. Secure_Cookie_설정
  7. Certificate_Pinning_확인
  8. HTTP_2_Server_Push
  9. Expect_CT_헤더
  10. Permissions_Policy

1. HTTP Strict Transport Security

개요

HSTS는 브라우저가 항상 HTTPS로만 접속하도록 강제하는 보안 헤더입니다. HTTP 요청을 자동으로 HTTPS로 리다이렉트합니다.

코드 예제

// Express.js에서 HSTS 설정
app.use((req, res, next) => {
  res.setHeader(
    'Strict-Transport-Security',
    'max-age=31536000; includeSubDomains; preload'
  );
  next();
});

설명

max-age는 초 단위로 HTTPS를 기억할 기간을 설정하고, includeSubDomains는 모든 하위 도메인에도 적용하며, preload는 브라우저 사전 로드 목록에 등록합니다.


2. Content Security Policy

개요

CSP는 XSS 공격을 방지하기 위해 허용된 리소스만 로드하도록 제한하는 보안 헤더입니다.

코드 예제

// CSP 헤더 설정
app.use((req, res, next) => {
  res.setHeader(
    'Content-Security-Policy',
    "default-src 'self'; script-src 'self' https://trusted.cdn.com"
  );
  next();
});

설명

default-src는 기본 정책을 설정하고, script-src는 JavaScript 파일을 로드할 수 있는 출처를 제한합니다. 'self'는 현재 도메인만 허용합니다.


3. TLS 1 3 적용

개요

TLS 1.3은 더 빠르고 안전한 최신 암호화 프로토콜입니다. Node.js에서 TLS 버전을 명시적으로 설정할 수 있습니다.

코드 예제

const https = require('https');
const fs = require('fs');

const options = {
  key: fs.readFileSync('private-key.pem'),
  cert: fs.readFileSync('certificate.pem'),
  minVersion: 'TLSv1.3'
};

https.createServer(options, app).listen(443);

설명

minVersion을 TLSv1.3으로 설정하여 안전하지 않은 구버전 TLS 연결을 차단하고 최신 보안 표준을 적용합니다.


4. Fetch API HTTPS 요청

개요

최신 Fetch API를 사용하여 HTTPS 엔드포인트에 안전하게 요청할 수 있습니다.

코드 예제

async function secureFetch() {
  const response = await fetch('https://api.example.com/data', {
    method: 'GET',
    headers: {
      'Content-Type': 'application/json'
    },
    mode: 'cors',
    credentials: 'include'
  });
  return await response.json();
}

설명

mode를 'cors'로 설정하고 credentials를 'include'로 설정하여 쿠키와 인증 정보를 포함한 안전한 크로스 도메인 요청을 수행합니다.


5. HTTPS 리다이렉트 미들웨어

개요

HTTP 요청을 자동으로 HTTPS로 리다이렉트하는 미들웨어를 구현합니다.

코드 예제

app.use((req, res, next) => {
  if (req.header('x-forwarded-proto') !== 'https') {
    res.redirect(`https://${req.header('host')}${req.url}`);
  } else {
    next();
  }
});

설명

x-forwarded-proto 헤더를 확인하여 HTTP 요청인 경우 동일한 경로의 HTTPS URL로 자동 리다이렉트합니다.


개요

HTTPS에서만 전송되는 안전한 쿠키를 설정하여 중간자 공격을 방지합니다.

코드 예제

res.cookie('sessionId', 'abc123', {
  secure: true,
  httpOnly: true,
  sameSite: 'strict',
  maxAge: 3600000
});

설명

secure는 HTTPS에서만 전송, httpOnly는 JavaScript 접근 차단, sameSite는 CSRF 공격 방지, maxAge는 쿠키 유효기간을 설정합니다.


7. Certificate Pinning 확인

개요

서버의 SSL 인증서를 검증하여 중간자 공격을 방지하는 기법입니다.

코드 예제

const https = require('https');

const options = {
  hostname: 'api.example.com',
  port: 443,
  path: '/data',
  method: 'GET',
  checkServerIdentity: (host, cert) => {
    const fingerprint = cert.fingerprint;
    if (fingerprint !== 'expected:fingerprint') {
      throw new Error('Certificate pinning failed');
    }
  }
};

설명

checkServerIdentity 함수를 통해 서버 인증서의 지문을 확인하여 신뢰할 수 있는 인증서인지 검증합니다.


8. HTTP 2 Server Push

개요

HTTP/2의 Server Push 기능을 활용하여 클라이언트 요청 전에 필요한 리소스를 미리 전송합니다.

코드 예제

const http2 = require('http2');
const fs = require('fs');

const server = http2.createSecureServer({
  key: fs.readFileSync('key.pem'),
  cert: fs.readFileSync('cert.pem')
});

server.on('stream', (stream, headers) => {
  stream.pushStream({ ':path': '/style.css' }, (err, pushStream) => {
    pushStream.respondWithFile('style.css');
  });
});

설명

HTTP/2의 pushStream을 사용하여 HTML 요청 시 CSS 파일을 자동으로 푸시하여 페이지 로딩 속도를 향상시킵니다.


9. Expect CT 헤더

개요

Certificate Transparency를 강제하여 잘못된 SSL 인증서 발급을 탐지합니다.

코드 예제

app.use((req, res, next) => {
  res.setHeader(
    'Expect-CT',
    'max-age=86400, enforce, report-uri="https://example.com/report"'
  );
  next();
});

설명

enforce는 CT 정책을 강제하고, report-uri는 위반 사항을 보고할 엔드포인트를 지정하여 인증서 투명성을 확보합니다.


10. Permissions Policy

개요

브라우저 기능(카메라, 위치 등)의 사용을 제어하는 최신 보안 헤더입니다.

코드 예제

app.use((req, res, next) => {
  res.setHeader(
    'Permissions-Policy',
    'camera=(), microphone=(), geolocation=(self)'
  );
  next();
});

설명

카메라와 마이크는 완전히 차단하고, 위치 정보는 현재 도메인에서만 허용하여 사용자 프라이버시를 보호합니다.


마치며

이번 글에서는 HTTPS 최신 기능 소개에 대해 알아보았습니다. 총 10가지 개념을 다루었으며, 각각의 사용법과 예제를 살펴보았습니다.

관련 태그

#JavaScript #HTTPS #Security #WebAPI #NetworkSecurity

#JavaScript#HTTPS#Security#WebAPI#NetworkSecurity

댓글 (0)

댓글을 작성하려면 로그인이 필요합니다.