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, 메모리, 저장장치 등)을 가상적으로 분할하여 여러개의 가상 컴퓨터 환경을 만들어내는 기술. 이를 통해 물리적인 컴퓨터 자원을 더욱..
-
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 : 도메인 중심 아키텍처의 일종으로 클린 아키텍처를 일반화한 구조 중 하나. 분..
-
HTTPServer/기타 2022. 10. 30. 16:59
1. HTTP란 무엇인가? 1.1 HyperText - 정의 : 참조(하이퍼링크)를 통해 독자가 한 문서에서 다른 문서로 즉시 접근할 수 있는 텍스트 1.2 Transfer - HTML 문서를 다른 컴퓨터에 주고 받는데 그 때, 보내는 주체와 받는 주체가 있다. 1.3 Protocol - 프로토콜은 협약, 통신 규약이라는 의미이다. 즉, HTTP는 컴퓨터끼리 어떻게 HTML 파일을 주고받을 지에 대한 통신 규약을 의미한다. 2. Stateless - Stateless = state(상태) + less(없음) 즉, 각각의 HTTP 통신(요청/응답)은 독립적이기 때문에 과거의 통신(요청/응답)에 대한 내용을 전혀 알지 못 한다는 특징. 따라서, 매 통신마다 필요한 모든 정보를 담아서 요청을 보내야 한다. 3..
-
Linux & TerminalServer/기타 2022. 10. 28. 15:22
Linux & Terminal 1. 운영체제 OS의 역할? 유저와 컴퓨터를 연결시켜준다. 사람과 기계 사이의 통역관! 컴퓨터는 생각보다 멍청하다. 0과 1밖에몰라 근데 계산은 되게 잘해. 그래서 0과 1 밖에 모르는 컴퓨터가 알아들을 수 있게 사용자의 명령을 OS가 변환해준다. 이건 OS의 부분적인 역할이고 OS는 컴퓨터의 자원관리도 해주고, 자원 보호까지 해준다. 그리고 효율적으로 컴퓨터를 사용할 수 있게끔 인증도 해준다. 1.1 커널과 쉘 사용자 ↔ 쉘 ↔ 커널 ↔ 하드웨어 터미널을 실행하면 뜨는 화면이 쉘이다. 쉘에는 여러가지가 있다 bash, zsh 근데 요새는 zsh를 많이 쓴다. 쉘은 사용자 입장에서 컴퓨터에게 명령을 내리는 곳이다. 그 명령을 커널이 가져다가 하드웨어에 전달을 해주고 하드웨어..
-
개발자도구 Element(요소) 패널Server/기타 2022. 10. 23. 18:46
1. Element 패널의 기능은? 웹 페이지의 구성 (DOM)을 확인할 수 있다. DOM ? ⇒ (Document Object Model) 텍스트 파일로 만들어져 있는 웹 문서를 브라우저에 렌더링하려면 웹 문서를 브라우저가 이해할 수 있는 구조로 메모리에 올려야 한다. 브라우저의 렌더링 엔진은 웹 문서를 로드한 후, 파싱하여 웹 문서를 브라우저가 이해할 수 있는 구조로 구성하여 메모리에 적재하는데 이를 DOM이라 한다. 정적인 웹페이지에 접근하여 동적으로 웹페이지를 변경하기 위한 유일한 방법은 메모리 상에 존재하는 DOM을 변경하는 것이고, 이때 필요한 것이 DOM에 접근하고 변경하는 프로퍼티와 메소드의 집합인 DOM API이다. 참고자료 : https://poiemaweb.com/js-dom 구성요소..