Server
-
CORS 정책을 고려한 API 작성하기Server/기타 2023. 4. 21. 21:23
CORS 정책을 고려한 API 작성하기 현재 토이프로젝트로 운영하고 있는 서비스에서는 로그인/회원가입 시 accessToken을 반환한다. 여기에 추가로 refresh token을 cookie로 전송하기로 결정했다. 그런데 기능을 개발하던 중 CORS 정책으로 인해 쿠키를 전송하는 것에 어려움을 겪었다. 원인을 찾아보니 CORS정책 때문이었다. frontend는 vercel로 server를 배포했고, api server는 별도의 도메인을 구매하여 배포했기 때문에, 서로 다른 도메인이어서 쿠키를 주고받는 것이 안되었던 것이다. 'CORS를 잘 모르면 삽질을 많이 하게 될 것이다.', 'BackEnd의 도움 없이 FrontEnd가 CORS를 해결하는 것은 불가능하다.'는 이야기를 들어왔던 터라, 이번 기회에..
-
인증/인가 과정에서 XSS, CSRF 보안 개선 사례Server/기타 2023. 4. 21. 19:44
인증/인가 과정에서 XSS, CSRF 보안 개선 사례 프로젝트 개선 과정에서 'accessToken이 로컬스토리지에 저장되는 것이 옳은가?' 생각해보게 되었다. accessToken은 JWT로 만들어졌는데, 페이로드에는 권한 인증을 위한 개인정보가 담긴다. 따라서 accessToken을 로컬스토리지에 저장하는 것은 접근, 탈취의 위험이 있어 좋은 방법같지 않았다. 그래서 accessToken이 로컬스토리지에 저장되었을 때, 그리고 탈취됐을 때 발생할 수 있는 문제에는 무엇이 있는지 알아보았고 XSS 공격에 취약하다는 점을 알게되었다. 해당 공격에 대한 자세한 내용은 별도로 작성한 글에서 확인할 수 있다. XSS 공격을 대비하기 위해, accessToken을 브라우저에서 접근할 수 없도록 로컬스토리지에 저..
-
원티드 프리온보딩 : 도커를 활용하는 클라우드 서비스Server/기타 2023. 4. 12. 01:09
컨테이너 오케스트레이션이란? 출처 : https://www.hpe.com/kr/ko/what-is/container-orchestration.html 일반적으로 애플리케이션은 의도에 따라 애플리케이션이 실행되게 하기 위해 네트워킹 수준에서 정리가 필요한 개별적으로 컨테이너화된 구성 요소(주로 마이크로 서비스로 칭함)로 구성됩니다. 이러한 방식으로 다수의 컨테이너를 정리하는 프로세스를 컨테이너 오케스트레이션이라고 합니다. 오늘날의 개발에서, 애플리케이션은 더 이상 하나의 통일체가 아니라 특정 애플리케이션이 설계 의도대로 기능하도록 함께 작동해야 하는 수십 또는 수백 개의 느슨하게 결합되고 컨테이너화된 요소로 구성됩니다. 컨테이너 오케스트레이션은 개별 구성 요소와 애플리케이션 계층의 작업을 정리하는 과정을 ..
-
원티드 프리온보딩 : 컨테이너 기술과 Docker의 기본 개념Server/기타 2023. 4. 6. 23:24
도커란 무엇일까 컨테이너 기반 가상화 도구 애플리케이션을 컨테이너라는 단위로 격리하여 실행하고 배포하는 기술 컨테이너란 무엇일까 컨테이너는 가상화 기술 중 하나 리눅스 컨테이너 기술인 LXC(Linux Containers) 기반 애플리케이션을 컨테이너라는 단위로 격리하여 실행하고 배포하는 기술 다양한 운영체제에서 사용할 수 있으며, 컨테이너화된 애플리케이션을 손쉽게 빌드, 배포, 관리할 수 있는 다양한 기능을 제공 위 기능들을 통해 애플리케이션을 빠르게 개발하고, 효율적으로 배포, 관리할 수 있음 가상화(virtualiztion) 기술이란 하나의 물리적인 컴퓨터 자원(CPU, 메모리, 저장장치 등)을 가상적으로 분할하여 여러개의 가상 컴퓨터 환경을 만들어내는 기술. 이를 통해 물리적인 컴퓨터 자원을 더욱..
-
[Nest.js] 로컬에서 https 서버 구동하고 postman으로 테스트 하기Server/Nest.js 2023. 4. 4. 17:27
[Nest.js] 로컬에서 https 서버 구동하고 postman으로 테스트 하기 진행하고 있는 프로젝트에서 refresh token을 secure, httpOnly 옵션으로 쿠키에 담아 전송해주기로 했다. 그런데 프로덕트 api 서버가 https 서버로 세팅되어 있기 때문에 로컬에서 쿠키가 전송되는지 테스트를 하기 위해서는 로컬 서버도 https로 구동해야 했다. 그래서 mkcert라는 라이브러리를 사용하여 postman으로 쿠키를 확인할 수 있도록 세팅했다. 1. mkcert로 인증서 만들기 1-1. 설치 npm install -g mkcert 1-2. CA 만들기 mkcert -install mkcert -CAROOT #CA 저장 위치 확인 1-3. 인증서 만들기 mkcert -cert-file [..
-
[MySQL] 문자열 자르기(left, substring, right)Server/MySQL 2023. 3. 24. 00:43
Left LEFT(str,len) 문자열 str(column)에서 가장 왼쪽에 있는 문자를 반환하거나 인자가 NULL인 경우 NULL을 반환합니다. mysql> SELECT LEFT('foobarbar', 5); -> 'fooba' Right RIGHT(str,len) 문자열 str(column)에서 가장 오른쪽에 있는 문자를 반환하거나 인수가 NULL인 경우 NULL을 반환합니다. mysql> SELECT RIGHT('foobarbar', 4); -> 'rbar' Substring = substr SUBSTRING(str,pos), SUBSTRING(str FROM pos), SUBSTRING(str,pos,len), SUBSTRING(str FROM pos FOR len) len 인수가 없는 형식은 ..
-
[MySQL] IF, CASE ~ WHEN, IFNULL, COALESCEServer/MySQL 2023. 3. 17. 22:54
IF Syntax : https://dev.mysql.com/doc/refman/8.0/en/if.html IF search_condition THEN statement_list [ELSEIF search_condition THEN statement_list] ... [ELSE statement_list] END IF CASE - WHEN Syntax : https://dev.mysql.com/doc/refman/8.0/en/case.html CASE case_value WHEN when_value THEN statement_list [WHEN when_value THEN statement_list] ... [ELSE statement_list] END CASE or CASE WHEN search_con..
-
XSS와 CSRF 공격Server/기타 2023. 3. 13. 18:26
XSS(Cross-Site Scripting) 공격 크로스사이트 스크립트 공격(Cross-site scripting Attacks)은 웹사이트에 악성 코드를 삽입하는 공격 방법이다. 공격자는 대상 웹 응용 프로그램의 결함을 이용하여 악성코드(일반적으로 클라이언트 측 JavaScript 사용)를 사용자에게 보낸다. XSS 공격은 일반적으로 애플리케이션의 호스트 자체를 대상으로 하지 않고 애플리케이션의 사용자를 목표로 삼는다. XSS는 공격자가 웹 응용프로그램을 속여 사용자의 브라우저에서 실행할 수 있는 형식의 데이터를 보낼 때 발생한다. 일반적인 HTML과 공격자가 제공한 XSS코드의 조합 뿐만 아니라 악성코드 다운로드, 플러그인 또는 미디어 콘텐츠를 이용하기도 한다. 사용자가 양식에 입력한 데이터 또는 ..
-
원티드 프리온보딩 : SW 아키텍쳐 - 2. Layered ArchitectureServer/기타 2023. 3. 11. 16:02
Layered Architecture 장단점 찾아보기 장점 구현이 단순하다. 생산성이 좋다. 빠르게 학습할 수 있다. 단점 데이터베이스 중심의 설계가 이루어진다. - repository 부터 설계가 이루어진다. repository가 우선적으로 되는 이유는 데이터베이스 설계(erd 등)부터 우선적으로 되기 때문. - 도메인 모델에 대한 상태변경이 아닌 행동 중심으로 모델링이 된다. 즉 엔터티를 변경시키는 행동으로 모델링이 된다. - 그래서 OOP가 무너진다. OOP를 배우는 이유가 객체와 객체 사이를 행동이 아닌 상태로 관리하고 메시지를 주고 받기 위한 건데, 엔티티에 getter, setter만 있으면 결국엔 엔티티가 DAO 가 되어 버린다. 단순 setter보단 의미있는 이름을 가진 메소드를 사용해야 ..
-
원티드 프리온보딩 : SW 아키텍쳐 - 1. 도메인과 아키텍처Server/기타 2023. 3. 10. 19:52
도메인이란? 정의 : 도메인은 일반적인 요구사항, 전문 용어, 그리고 컴퓨터 프로그래밍 분야에서 문제를 풀기 위해 설계된 어떤 소프트웨어 프로그램에 대한 기능성을 정의하는 연구의 한 영역이다. 출처 : https://ko.wikipedia.org/wiki/도메인_(소프트웨어_공학) 간단히 말하면 개발하고자 하는 소프트웨어의 요구사항, 문제 영역을 도메인이라고 생각할 수 있다. 쇼핑몰을 예로 들면, 카탈로그, 리뷰, 주문, 결제, 배송, 정산, 회원 등이 도메인이다. 레이어드 아키텍처 아키텍처 종류 모놀리식 아키텍쳐 Layered Architecture Clean Architecture Hexagonal Architecture : 도메인 중심 아키텍처의 일종으로 클린 아키텍처를 일반화한 구조 중 하나. 분..