본문 바로가기

개발/NestJS23

[NestJS] swagger 보안(잠금) 실제 운영중인 서비스 API가 아무런 잠금 없이 노출되고 사용되고 있다면 굉장히 위험한 상황일것이다. 그런일이 발생하지 않도록 swagger에 아이디와 비밀번호를 걸어보도록 하자!! NestJs는 기본적으로 express위에서 동작하기 때문에 express에서 사용하던 라이브러리를 사용하면 된다. 설치법 npm install express-basic-auth 사용법 import expressBasicAuth from "express-basic-auth"; app.use( ["/api"], expressBasicAuth({ challenge: true, users: { [process.env.SWAGGER_USER]: process.env.SWAGGER_PASSWORD } }) ); challenge옵션을.. 2023. 4. 24.
SQL injection(Feat. TypeORM) 얼마 전 개발을 하다가 SQL injection에 대해서 알게 되었다. 사실 지금 알았다기보다는 예전에도 들어봤지만 이제야 이 단어를 듣고 내 코드에 대해 안전한가? 생각할 수 있는 정도로 성장했다고? 보여진다.. 예전에는 그냥 그렇구나 하면서 지나갔을 것이다... 현재 회사 서비스를 개발하고 있는 상황에서 TypeORM을 사용하고 있는 중인데 과연 내 코드는 SQL injection으로부터 안전할까 라는 생각이 들어서 관련 글을 정리해 본다. SQL injection이란?? 코드 인젝션의 한 기법으로 악의적인 사용자가 클라이언트의 입력값을 조작하여 임의의 SQL 문을 주입하여 서버의 데이터베이스를 비정상적인 동작을 하도록 조작하는 공격방식을 말한다. 주로 사용자가 입력한 데이터를 제대로 필터링, 이스케.. 2023. 2. 15.
[NestJS] AWS S3 Pre-signed URL 발급 현재 회사에서는 프론트에서 직접 s3에 이미지를 업로드하고 업로드한 url을 서버에 보내 DB에 저장하는 형식으로 진행되고 있었다. 근데 확인해보니 프론트에서 s3에 직접 업로드하는 과정에서 aws key값이 브라우저에 그대로 노출되고 있었고 이로 인해 해킹까지 이어질 수 있는 위험한 상황이었다. 그리하여 방법을 찾다가 Pre-signed URL을 알게 되었고 NestJS 서버에서 발급받는 방법을 정리하려고 한다. Pre-signed URL이란 무엇인가? 직역하자면 미리 서명된 URL이다. 쉽게 설명하자면 인증된 사용자가 s3에 접근해 인증된 url을 발급받고 이 url을 통해 객체에 접근해서 읽거나 수정하는 작업이 가능해지는 것이다. 주의할 점은 Pre-signed URL은 url을 아는 모두에게 Am.. 2022. 12. 18.
[NestJS] Swagger에서 return type을 여러 개 설정하는 법 API를 정의하고 Swagger 문서를 작성하다 보면 API return type이 두 가지 이상일 경우 Swagger에서도 이를 표현해야 할 때가 있다. 그런 분들을 위해서 작성한 방법을 공유하려 한다. 이런 식으로 두 가지 타입이 return 값으로 정의되게 하려면 어떻게 해야 할까 바로 코드로 들어가 보자 바로 정답을 보여줘서 재미없을 수도 있지만 찾는 게 어렵지 알고 나면 쉬운 거라 머라고 할 말이 없다... 구현 후 schema 코드를 타고 들어가 보면 oneOf 말고도 allOf, anyOf 등 다른 타입들도 존재하니 상황에 맞게 사용하기 바란다. 참고 링크 https://docs.nestjs.com/openapi/operations Documentation | NestJS - A progre.. 2022. 12. 3.