본문 바로가기
728x90
반응형

Back-end/Node-NestJS11

[Nest JS] useGlobalPipes 설정하기 -main.ts app.useGlobalPipes( new ValidationPipe({ whitelist: false, //DTO에 정의되지 않은 속성은 자동제거, 에러메세지 출력 forbidNonWhitelisted: false, //DTO에 존재하지않는 값이 들어오면 에러메세지 출력 transform: true, //DTO에 설정 타입은 striing이지만 number로 타입 변형 가능하게 설정 transformOptions: { enableImplicitConversion: true, //문자열에서 숫자, 불리언 또는 배열로의 암시적 변환이 가능 }, }), ); 웹 애플리케이션으로 전송된 모든 데이터의 정확성을 검증하기 위한 파이프이다. ValidationPipe 는 강력한 클래스 유효성 검사기.. 2024. 4. 15.
Chatgpt 가 설명해주는 Nest.js의 장단점 Nest.js의 장점과 단점에 대해 알려드리겠습니다. 😎장점: Express와 같은 Node.js 웹 프레임워크에서 사용하는 많은 개념들을 확장하여 더욱 구조적이고 모듈화된 애플리케이션을 쉽게 개발할 수 있습니다. TypeScript를 지원하여 컴파일 시간에 타입 오류를 잡을 수 있어 코드 안정성과 유지보수성이 높아집니다. 모듈화된 아키텍처를 사용하여 코드를 쉽게 재사용하고, 테스트하기도 용이합니다. Nest.js는 웹 애플리케이션 뿐만 아니라 마이크로서비스, API, 스트리밍, 웹소켓 등 다양한 분야에서도 사용할 수 있습니다. 😎단점: Nest.js는 새로운 개념들과 아키텍처를 포함하고 있기 때문에, Node.js나 Express와 같은 경험이 많은 개발자들에게는 학습 곡선이 높을 수 있습니다. Nes.. 2023. 4. 25.
Nest.js node-cache 라이브러리 적용 휴대폰 인증같이 간단한 처리는 캐시에 데이터를 넣어 처리 가능하다. 간단하게 캐시데이터 get / set 코드 import { Injectable } from '@nestjs/common'; import NodeCache from 'node-cache'; @Injectable() export class AuthCache { private cache: NodeCache; constructor() { this.cache = new NodeCache(); } async createCache(params : any) { let { props } = params let { mobileNo, authNo } = props const cacheKey = mobileNo; // 캐시 키 const chcheValue .. 2023. 3. 21.
[NestJs] PayloadTooLargeError: request entity too large 발생 원인 PayloadTooLargeError가 발생하는 원인은 파서가 읽을 수 있는 데이터 허용치보다 request가 보낸 데이터의 크기가 커서 정상적으로 파싱을 할 수 없을 때 발생하는 에러 해결 방법 main.ts import { urlencoded, json } from 'body-parser'; app.use(json({ limit: '50mb' })); app.use(urlencoded({ limit: '50mb', extended: true })); limit 옵션을 추가로 주어 파싱 허용치를 증가 2023. 1. 5.
ejs 문법 <%= 와 <%- 차이 공식문서 1. ejs 란? ejs는 Embedded JavaScript Template의 약자로 nodejs 진영에서 많이 사용하는 템플릿 엔진이다. 문법이 단순한 것이 특징 2. 기본 문법 주석 : JS 코드 : 변수 출력(html escape 처리: >를 $gt로 변환) : 태그내부 공백 제거 : html escape안하고 변수 출력 : 태그 2022. 12. 9.
helmet 보안 xss 필터 추가 helmet 모듈은 서버에서 다양한 HTTP 헤더를 자동 설정을 통해 서버 어플리케이션의 보안을 강화해주는 대표적인 노드 보안 모듈 main.ts 에서 설정 해준다. import * as helmet from "helmet"; const app = await NestFactory.create(AppModule); app.use(helmet()); //csp, expectCt, hpkp, noCache, referrerPolicy는 적용되지 않으니 따로 설정 필요 간단하게 이렇게 적용도 가능하지만 contentSecurityPolicy는 꽤 복잡한 설정이기 때문에 일단 꺼둔다. // app.use(helmet.contentSecurityPolicy()); // Content-Security-Policy 헤.. 2022. 11. 23.
[XSS] Nest js에 xss 필터를 넣어서 보안 강화 XSS 방지, Cross Site Scripting # XSS(cross site scripting) 크로스 사이트 스크립트 변조(cross site scripting, xss)는 공격자가 상대방의 브라우저에 스크립트가 실행되도록 해 사용자의 세션을 가로채거나, 웹사이트를 변조하거나, 악의적 콘텐츠를 삽입하거나, 피싱 공격을 진행하는 것 예를 들어 검색어 에 스크립트 코드를 넣어서 악성 코드를 뿌린다던가..등등 nest 는 xss설정을 하는 방법 크게 2가지로 나눈다 1. 파이프 2. helmet 라이브러리 사용 파이프의 경우 필터, 인터셉트와 같은 기능 같지만 우선순위가 낮다. helmet 라이브러리를 이용한 간단한 xss보안 필터 설정을 해보겠다 😎import npm install helmet 모듈을 설치하고 나서 적용 * 파일이름 : main.ts .. 2022. 11. 10.
[Node/Nest] shell 글자 꾸미기 사용하여 큰 글씨 주석 달기 figlet figlet figlet란 리눅스 쉘을 꾸미는 용도로 많이 사용하지만 controller단에서 api를 큼직하게 구분하기 위해 사용해보았다. 공식npm 😎 install npm i figlet 😎 import import * as figlet from 'figlet'; 글자를 콘솔 창에 출력하기 위한 코드 figlet.text('TEST!!', { font: 'Ghost', //Ghost , Standard , Graffiti , Dancing Font , Slant , Pagga horizontalLayout: 'default', verticalLayout: 'default', width: 100, whitespaceBreak: true }, function(err, data) { if (err) { .. 2022. 9. 14.
[NestJS] 상황에 따른 logger level 분기 나누기 Nest JS / logger level 분기 나누기 대체로 웹 개발을 진행할때 실제 운영 서버 / Stage 서버 / 개발 DEV 서버로 나뉜다. 실제 운영서버의 부하를 줄이기위해 Log 레벨에 제한을줘서 특정 Log만 출력하게 설정 가능하다. - main.ts async function bootstrap() { const app = await NestFactory.create(AppModule,{ logger: process.env.NODE_ENV === 'DEV' ? ['error', 'warn', 'log', 'verbose', 'debug'] : ['error', 'debug', 'log'] }); //...추가설정들 await app.listen(process.env.APP_PORT); } b.. 2022. 9. 14.
728x90
반응형