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

[XSS] Nest js에 xss 필터를 넣어서 보안 강화 XSS 방지, Cross Site Scripting

by 꼬바리 2022. 11. 10.

# XSS(cross site scripting)

크로스 사이트 스크립트 변조(cross site scripting, xss)는 공격자가 상대방의 브라우저에 스크립트가 실행되도록 해 사용자의 세션을 가로채거나, 웹사이트를 변조하거나, 악의적 콘텐츠를 삽입하거나, 피싱 공격을 진행하는 것

 

예를 들어 검색어 에 스크립트 코드를 넣어서 악성 코드를 뿌린다던가..등등

 

nest 는 xss설정을 하는 방법 크게 2가지로 나눈다

1. 파이프

2. helmet 라이브러리 사용

 

 

파이프의 경우 필터, 인터셉트와 같은 기능 같지만 우선순위가 낮다.

 

helmet 라이브러리를 이용한 간단한 xss보안 필터 설정을 해보겠다

 

 

😎import

npm install helmet

모듈을 설치하고 나서 적용

* 파일이름 : main.ts

import { NestFactory } from '@nestjs/core';
import { NestExpressApplication } from '@nestjs/platform-express';
import { AppModule } from './app.module';
//import * as helmet from "helmet";
import helmet from "helmet";

async function bootstrap() {
  const app = await NestFactory.create<NestExpressApplication>(AppModule);
  app.use(helmet());
  await app.listen(8080);
}
bootstrap();

app.use(helmet());

한줄로 간단하게 적용가능

헬멧은 아주 간단하면서도 사용이 쉬운(?) 보안프레임워크

 

좀더 세부적으로 사용하기 위해서는 아래처럼 사용하기도 한다.

* 파일이름 : main.ts

import { NestFactory } from '@nestjs/core';
import { NestExpressApplication } from '@nestjs/platform-express';
import { AppModule } from './app.module';
import * as helmet from "helmet";

async function bootstrap() {
  const app = await NestFactory.create<NestExpressApplication>(AppModule);
  app.use(helmet.contentSecurityPolicy());
  app.use(helmet.crossOriginEmbedderPolicy());
  app.use(helmet.crossOriginOpenerPolicy());
  app.use(helmet.crossOriginResourcePolicy());
  app.use(helmet.dnsPrefetchControl());
  app.use(helmet.expectCt());
  app.use(helmet.frameguard());
  app.use(helmet.hidePoweredBy());
  app.use(helmet.hsts());
  app.use(helmet.ieNoOpen());
  app.use(helmet.noSniff());
  app.use(helmet.originAgentCluster());
  app.use(helmet.permittedCrossDomainPolicies());
  app.use(helmet.referrerPolicy());
  app.use(helmet.xssFilter());
  await app.listen(8080);
}
bootstrap();

helmet 참고링크

728x90
반응형

댓글