본문 바로가기
Back-end/Node-NestJS

helmet 보안 xss 필터 추가

by 꼬바리 2022. 11. 23.

helmet 모듈은 서버에서 다양한 HTTP 헤더를 자동 설정을 통해 서버 어플리케이션의 보안을 강화해주는 대표적인 노드 보안 모듈

 

main.ts 에서 설정 해준다.

 

import * as helmet from "helmet";
const app = await NestFactory.create<NestExpressApplication>(AppModule);

 

app.use(helmet());                             
//csp, expectCt, hpkp, noCache, referrerPolicy는 적용되지 않으니 따로 설정 필요

간단하게 이렇게 적용도 가능하지만

contentSecurityPolicy는 꽤 복잡한 설정이기 때문에 일단 꺼둔다.

 

// app.use(helmet.contentSecurityPolicy());      
// Content-Security-Policy 헤더를 설정하여 XSS(Cross-site scripting) 공격 및 기타 교차 사이트 인젝션을 예방,
// 다른 사이트의 script를 불러오는 것도 막기 때문에 헬멧 적용 전 별도로 설정이 필요
  // app.use(helmet(
  //   {contentSecurityPolicy: false}
  //   ));                                             
  // contentSecurityPolicy는 꽤 복잡한 설정이기 때문에 일단 꺼둔다.
  app.use(helmet.crossOriginEmbedderPolicy());      
  //Cross-Origin-Embedder-Policy 헤더를 require-corp로 설정
  app.use(helmet.crossOriginOpenerPolicy());        
  //Cross-Origin-Opener-Policy 헤더를 설정
  app.use(helmet.crossOriginResourcePolicy());      
  //Cross-Origin-Resource-Policy 헤더를 설정
  app.use(helmet.dnsPrefetchControl());             
  //DNS 프리 페치를 비활성화
  app.use(helmet.expectCt());                       
  //Expect-CT 헤더를 설정하여 SSL 인증서 오발급을 예방
  app.use(helmet.frameguard());                     
  //X-Frame-Options 헤더를 설정하여 clickjacking에 대한 보호를 제공
  app.use(helmet.hidePoweredBy())                   
  // X-Powered-By 헤더를 제거
  app.use(helmet.hsts());                           
  //서버에 대한 안전한(SSL/TLS를 통한 HTTP) 연결을 적용하는 Strict-Transport-Security 헤더를 설정
  app.use(helmet.ieNoOpen());                       
  // IE8 이상에 대해 X-Download-Options를 설정
  app.use(helmet.noSniff());                        
  //X-Content-Type-Options 를 설정하여, 선언된 콘텐츠 유형으로부터 벗어난 응답에 대한 브라우저의 MIME 가로채기를 방지
  app.use(helmet.originAgentCluster());             
  //Origin-Agent-Cluster 헤더를 설정하여 오리진 간 문서를 별도 에이전트 클러스터로 분리
  app.use(helmet.permittedCrossDomainPolicies());   
  //크로스 도메인 콘텐츠 정책을 설정
  app.use(helmet.referrerPolicy());                 
  //참조 referrer 헤더를 숨김
  app.use(helmet.xssFilter());                      
  //X-XSS-Protection을 설정하여 대부분의 최신 웹 브라우저에서 XSS(Cross-site scripting) 필터를 사용

 

 

app.disable('x-powered-by');    //Express 사용정보 숨기기 x-powered-by 옵션 off ->  어떤 기술로 서버를 개발했는지 나오는 값

x-powered-by 가 헤더에서 안사러져서 고전중 

https://www.npmjs.com/package/helmet

https://github.com/helmetjs/helmet#how-it-works

헬멧 사용법은 위링크

 

더보기

[22-11-23]

하다보니 혹시 설마 express에서만 사용하는 걸까?

생각중

왜냐면 안먹히니까 개빢치니까..

하지만 말이되지않잖아

ㅡ,.ㅡ

node이고 express인데 왜!! 왜! 왜! 왜!!!!!!!!!!!!!!!!!!!!

혹시 프론트는 exress여서? 뜨는걸까 아니야

정신차려

 

Nestjs의 공식 사이트

Nest (NestJS)는 효율적이고 확장 가능한 Node.js서버측 애플리케이션을 구축하기 위한 프레임워크입니다.

프로그레시브 자바스크립트를 사용하고 TypeScript로 빌드되고 완벽하게 지원하며(하지만 여전히 개발자가 순수 자바스크립트로 코딩할 수 있음), OOP (객체 지향 프로그래밍 Object Oriented Programming), FP (함수형 프로그래밍 Functional Programming) 및 FRP (함수형 반응형 프로그래밍 Functional Reactive Programming) 요소를 결합합니다.

express를 기본으로 채택하고 그 위에 여러 기능을 미리 구현해놓은 것이 nestjs입니다.

 

그치..

익스프레스 위에 !!!!!!!!!!!!!!!!!!!!!!!!!!! 단하나자나하아ㅏ안

왜안ㅇ되 ㅅ바

 

728x90
반응형

댓글