본문 바로가기

전체 글38

[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.
[JavaScript] await? return await? return? 필자의 경우 nestjs로 백앤드를 개발하고 있는데 개발을 하다 보면 비동기 함수를 사용하는 경우가 많고 그럼 async 선언을 많이 하는데 이 함수들을 사용할 때 return에 대해서 어떻게 처리하는 게 올바른가에 대한 생각을 자주 하게 된다. 그럴 때마다 구글에서 검색하면 어떤 외국 원문이 굉장히 잘 설명되어 있고 그 글을 해석한 글들이 굉장히 많이 있기 때문에 볼 때마다 이해했다고 착각? 하고 그 순간만 넘기다 보니 똑같은 주제를 3번 이상 찾아보고 있다는 걸 느꼈고 내용은 같더라도 직접 정리해서 내 거로 만들고 다시 검색하는 일을 없애기 위해 작성하는 글이다!! 부디 기존 글들과 같다고 나쁘게 생각하지 마세요!!! 이 글을 보시는 분들도 이러한 생각들을 고민한 적이 있다면 주저 없이 작성하고 정리.. 2023. 3. 25.
[TypeScript] 타입 공간과 값 공간의 심벌 구분하기! 최근에 TypeScript 관련 단톡방에서 type과 interface 타입을 정의하고 그 값을 조건문 분기 하는 질문 글이 올라왔는데 나도 그 문제에 대해 풀어보려고 여러 가지 시도를 하다 보니 내가 TypeScript의 class, interface, type 등 아직 잘 모른다고 생각해 이펙티브 타입스크립트 책을 확인하던 중에 나에게 딱 필요한 부분이 있어서 이펙티브 타입스크립트 아이템 8을 토대로 글을 작성하려 한다. 앞으로 얘기하는 심벌은 ES6에서 추가된 자료형 심벌(symbol)이 아니라 그냥 그 값, 상징 실제 영어단어의 symbol을 뜻한다고 생각하면 좋을 것이다. 책에서는 타입스크립트 심벌(symbol)은 타입 공간이나 값 공간 중의 한 곳에 존재한다고 말한다. 그래서 심벌은 이름이 같.. 2023. 2. 26.
SQL injection(Feat. TypeORM) 얼마 전 개발을 하다가 SQL injection에 대해서 알게 되었다. 사실 지금 알았다기보다는 예전에도 들어봤지만 이제야 이 단어를 듣고 내 코드에 대해 안전한가? 생각할 수 있는 정도로 성장했다고? 보여진다.. 예전에는 그냥 그렇구나 하면서 지나갔을 것이다... 현재 회사 서비스를 개발하고 있는 상황에서 TypeORM을 사용하고 있는 중인데 과연 내 코드는 SQL injection으로부터 안전할까 라는 생각이 들어서 관련 글을 정리해 본다. SQL injection이란?? 코드 인젝션의 한 기법으로 악의적인 사용자가 클라이언트의 입력값을 조작하여 임의의 SQL 문을 주입하여 서버의 데이터베이스를 비정상적인 동작을 하도록 조작하는 공격방식을 말한다. 주로 사용자가 입력한 데이터를 제대로 필터링, 이스케.. 2023. 2. 15.
[JavaScript] 옵셔널 체이닝(Optional chaining) 사용법과 주의할점 자바스크립트에 Optional Chaining을 사용하면 함수나 객체의 속성을 호출할 때 호출하는 값이 정의되지 않았거나 falsy 한 값인 경우 오류를 발생시키는 대신 undefined를 반환하게 해 주어 예상치 못한 런타임 에러를 막아준다. const adventurer = { name: 'Alice', cat: { name: 'Dinah' } }; const dogName = adventurer.dog?.name; console.log(dogName); // Expected output: undefined console.log(adventurer.someNonExistentMethod?.()); // Expected output: undefined 위 예시처럼 실제 존재하지 않는 객체의 dog를 호.. 2023. 2. 13.
[JavaScript] call by value, call by reference, call by sharing 얼마 전 다른 글 정리하면서 call by value와 call by reference관련해서 보게 되었는데 생각해 보니 javascript에서는 어떻게 돌아가는지 명확하게 공부하거나 찾아보지는 않고 그냥 원시형, 참조형으로 값에 어떻게 영향이 가는지 정도만 알고 사용하고 있어서 좀 더 알아보니 새로운 개념들을 알게 되어서 정리한다!! call by value, call by reference란?? 함수를 호출할 때 argument 값의 타입이 어떤 것이냐 하는 것인데 argument가 기본형이면 call by value, 참조형이면 call by reference이다. call by value 원시형 값의 의한 호출 원본 값을 복사하여 parameter로 전달 call by reference 참조형 값.. 2023. 2. 7.