Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- class
- cookie
- OCR
- Express
- MongoDB
- dfs
- Queue
- nestjs
- 자료구조
- nodejs
- game
- Nest.js
- mongoose
- JavaScript
- react
- 공룡게임
- 게임
- typeORM
- MySQL
- Dinosaur
- TypeScript
- GIT
- Python
- jest
- 정렬
- AWS
- Sequelize
- flask
- Bull
Archives
- Today
- Total
포시코딩
1월22일 - helmet 본문
728x90
helmet
helmet 라이브러리는 다양한 HTTP header를 설정하여 Express 앱을 보호하는데 도움을 준다.
사용방법
const express = require("express");
const helmet = require("helmet"); // (1)
const app = express();
app.use(helmet()); // (2)
주석으로 해놓은 (1), (2) 두 줄이 끝이다. 최상위 helmet() 함수는 아래 15개의 작은 미들웨어를 감싸고 있다.
세부 미들웨어 간단 정리
- helmet.contentSecurityPolicy(): 크로스 사이트 스크립팅 공격 완화
- helmet.crossOriginEmbedderPolicy(): Cross-Origin-Embedder-Policy(COEP) 헤더 설정 [참고]
- helmet.crossOriginOpenerPolicy(): Cross-Origin-Opener-Policy 헤더 설정 [참고]
- helmet.crossOriginResourcePolicy(): Cross-Origin-Resource-Policy 헤더 설정 [참고]
- Spectre와 같은 공격에 대한 강력한 방어 수단으로,
공격자의 프로세스에 들어가기 전에 브라우저가 주어진 응답을 차단할 수 있게함
- Spectre와 같은 공격에 대한 강력한 방어 수단으로,
- helmet.expectCt(): 잘못 발급된 SSL 인증서를 완화하는 헤더 설정
- but, 2022년 이후부터 새 브라우저에서 유용하지 않아 helmet의 다음 버전부터 삭제 예정
- helmet.referrerPolicy(): 요청에 포함되어야 하는 referrer 정보의 양을 제어
- helmet.hsts(): Strict-Transport-Security (HSTS)로 축약
- 사이트가 HTTPS를 통해서만 액세스되어야 하며
향후 HTTP를 사용하여 사이트에 액세스하려는 모든 시도는 자동으로 HTTPS로 변환되어야 함을 알림
- 사이트가 HTTPS를 통해서만 액세스되어야 하며
- helmet.noSniff(): 보안 취약점을 유발할 수 있는 MIME 유형 스니핑을 완화
- helmet.originAgentCluster(): 웹 응용 프로그램이 원본을 격리할 수 있는 메커니즘을 제공하는 헤더 설정
- helmet.dnsPrefetchControl(): DNS 미리 가져오기 제어 헤더를 설정하여 링크 클릭 시의 대기 시간을 줄임
- helmet.ieNoOpen(): 안전하지 않은 다운로드를 강제로 저장하여 사이트 컨텍스트에서의 HTML 실행을 완화한다.
- XSS 공격 방어
- helmet.frameguard(): 클릭재킹 공격 방어
- 클랙재킹: 웹 페이지 기반의 공격 유형.
페이지 위에 투명한 계층을 만들어 사용자가 클릭하거나 내용을 입력하게 유도하는 공격이다.
- 클랙재킹: 웹 페이지 기반의 공격 유형.
- helmet.permittedCrossDomainPolicies(): 도메인 간 콘텐츠 로드에 대한 도메인 정책을 알려주는 헤더 설정
- helmet.hidePoweredBy(): 일부 프레임워크(ex: express)에서 기본적으로 설정되는 헤더 제거
- helmet.xssFilter(): 이 기능은 잘 이해가 안간다.
- X-XSS-Protection을 0으로 설정한다는데 XSS 공격을 감지하면
X-XSS-Protection을 통해 페이지 로드를 중지해주는걸 왜 0으로 하는건지 (0은 끄는거 아닌가?)
- X-XSS-Protection을 0으로 설정한다는데 XSS 공격을 감지하면
일단 최대한 공식 npm 문서를 보고 정리해봤는데
좀 더 처음 접하는 사용자에게 잘 설명될만한 포스팅이 있어 따로 링크를 남긴다.
일단 나부터 처음 써보는 라이브러리이기 때문에
헤더의 설정을 통해 웹 취약점으로부터 서버를 보호해주는 라이브러리라는 점만 인지하고 사용해보면서 알아가야 할 것 같다.
참고한 곳
728x90
'TIL' 카테고리의 다른 글
1월24일 - DB time zone (0) | 2023.01.24 |
---|---|
1월23일 - console.log, alert (0) | 2023.01.23 |
1월21일 - TypeScript 기본 세팅 (0) | 2023.01.21 |
1월20일 - 오버로딩(overloading) (0) | 2023.01.20 |
1월19일 - Sequelize Transaction (0) | 2023.01.19 |