Topic
-
컴퓨터 공학 기초, 문자열, 그래픽, 운영체제Topic/CS 2022. 2. 10. 11:54
문자열 ✔️ 2010년 이후, 컴퓨터 세계에서 우리는 인코딩 방식이 통일된 유니코드를 이용하고 있다. 문자열 하나는 몇 바이트일까? 알파벳 하나가 1바이트(byte)를 차지하던 시절이 있었지만 요즘에는 유니코드를 사용해야 텍스트를 정확히 저장할 수 있다. 유니코드란? 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준이다. 이 표준에는 ISO 10646 문자 집합, 문자 인코딩, 문자 정보 데이터베이스, 문자를 다루는 알고리즘 등이 포함된다. 인코딩이란 어떤 문자나 기호를 컴퓨터가 이용할 수 있는 신호로 만드는 것. 이 신호를 입력하는 인코딩과 문자를 해독하는 디코딩을 하기 위해서는 정해진 기준을 바탕으로 입력과 해독이 처리되어야 한다. 이렇게 인코딩과 디코딩의 기준을 ..
-
쿠키, 세션, 토큰 정리Topic/Node.js | server 2022. 2. 10. 11:24
쿠키 ✔️ 서버가 클라이언트 (브라우저)에게 일방적으로 주는 것 HTTP Response (응답코드, 헤더, 바디 중 헤더에 set-cookie) 각 옵션의 의미 domain: 같은 사이트 path: 같은 경로 / httpOnly: 자바스크립트 사용 여부 maxAge, Expires: 만료 기간 설정 sameSite: 3rd-cookie LAX: 3rd-party가 GET일 때만 허용 STRICT: 3rd-party 쿠키 차단 none: 적용 안함 (https일 때만 가능) secure: HTTPS에 쿠키를 전달 여부 쿠키의 인증 상 한계 MaxAge or Expires, HttpOnly, SameSite 등 각종 옵션들을 이용해 XSS, CSRF 등의 공격에 대비할 수 있는 방법이 있기는 하지만 결국..
-
jwt, 쿠키, 세션, 토큰Topic/Node.js | server 2022. 2. 8. 22:06
세션 서버가 Client에 유일하고 암호화된 ID를 부여 중요 데이터는 서버에서 관리 설명 접속 상태 저장 경로 장점 단점 Cookie 쿠키는 단지 http의 stateless한 것을 보완해주는 도구 클라이언트 서버에 부담을 덜어준다. 쿠키 그 자체는 인증이 아니다. Session 접속 상태를 서버가 가짐(stateless) 접속 상태와 권한 부여를 위해 세션아이디를 쿠키로 전송 서버 신뢰할 수 있는 유저인지 서버에서 추가로 확인 가능 하나의 서버에서만 접속 상태를 가지므로 분산에 불리 토큰 세션기반 인증 = 서버(혹은 DB)에 유저 정보를 담는 방식 "이 부담을 클라이언트에게 넘겨줄 수 없을까?"에서 고안 대표적인 토큰 기반 인증 -> JWT(JSON Web Token) 토큰은 마패로 생각하자! (복잡..
-
인증 & 보안 기초Topic/Node.js | server 2022. 2. 7. 22:16
HTTPS HTTPS: Hyper Text Transfer Protocol Secure socket layer 인증에서 HTTPS 프로토콜을 사용해야만 하는 이유 HTTP보다 상대적으로 안전하고, 데이터 제공자의 신원을 보장받을 수 있기 때문이다. 암호화 HTTPS 프로토콜의 특징 중 하나는 암호화된 데이터를 주고받기 때문에, 중간에 인터넷 요청이 탈취되더라도 그 내용을 알아볼 수 없다. 그렇기 때문에 데이터를 암호화하여 전송하는 HTTPS 프로토콜을 사용한다면 비밀번호와 같은 중요한 데이터가 유출될 가능성이 HTTP 프로토콜보다 현저히 적어지게 된다. 인증서 브라우저가 응답과 함께 전달된 인증서 정보를 확인할 수 있는 특징을 가진다. 브라우저는 인증서의 도메인과 데이터를 제공한 제공자의 도메인을 비교할..
-
MVC 파트, Short.lyTopic/Database 2022. 1. 26. 19:41
Short.ly MVC ✔️ 어떤 url 주소를 짧은 url 주소로 변환하여 주는 역할을 해주는 어플리케이션을 가지고 mysql, MVC 다뤄본다. 1) controllers 디렉토리 생성 models, routes, modules 등의 디렉토리 들과 동일 선상에 controllers 디렉토리를 생성해 주고, 그 안에 links 라는 디렉토리를 생성한 후, links안에 index.js 생성 controllers / links / index.js 2) app.js 서버 통신을 위한 express 와 routes 디렉토리 내에 있는 라우팅 파일들을 불러와서 app.use('/', indexRouter) app.use('/links', linksRouter) 클라이언트가 해당 경로로 요청을 보냈을 때 ind..
-
MVC, Database 구현Topic/Database 2022. 1. 25. 22:54
MVC ✔️ Model View Controller SW 아키텍쳐 디자인 패턴이다. 애플리케이션의 기능을 분리한다. 체계화된 프로그래밍을 가능케한다. ex) Ruby on Rails (Ruby) / Laravel (PHP) / Codeigniter (PHP) / Django (python) / Express (JS) Model 어플리케이션이 무엇을 할 것인지 정의한다. 내부 로직을 처리하기 위한 역할을 한다. 데이터 저장소(DB)와 연동하여 사용자가 입력한 데이터나 사용자에게 출력할 데이터를 다룬다. * Model은 다른 컴포넌트들에 대해 알지 못한다. View 사용자에게 화면(UI)을 보여준다. 화면에 무엇을 보여주기 위한 역할이다. 모델이 처리한 데이터나 그 작업 결과를 가지고 사용자에게 출력할 화면..
-
SQL 데이터베이스 연결, 스키마, SchemaTopic/Database 2022. 1. 21. 22:33
스키마의 중요성 인스타그램 스키마 디자인 SQL 쿼리문 JOIN에서 유독 막히는 부분들이 있었고 구글링을 하다 보니 JOIN에 대한 좋은 이해를 하게 된 표가 있다. 👇🏻 여기에서 INNER JOIN은 간단히 교집합이라고 생각하면 된다. 문제는 LEFT JOIN과 같은 OUTER JOIN들이 있는데, 쉽게 생각해서 FROM에 들어가는 테이블이 왼쪽, JOIN 칸에 들어가는 쪽이 오른쪽에 위치한다고 생각하고, 그 다음 LEFT냐 RIGHT냐에 따라서 왼쪽 원을 칠할 것이냐 오른쪽 원을 칠할 것이냐 라고 생각하는 편이 편하다. 코드로 풀어보자면, SELECT FROM TableA A LEFT JOIN TableB B On A.key = B.key 그림 왼쪽 상단의 LEFT JOIN의 실사용 쿼리문이다.
-
데이터베이스, SQL, ACID, Schema, QueryTopic/Database 2022. 1. 20. 22:10
SQL Basics ✔️ SQL ☑️ SQL: Structured Query Language / 데이터베이스 언어로, 주로 관계형 데이터베이스에서 사용한다. ex) MySQL, Oracle, SQlite, PostgreSQL ... 다양한 데이터베이스에서 SQL 구문을 사용할 수 있다. SQL이란 데이터베이스 용 프로그래밍 언어이다. 데이터베이스에 쿼리를 보내 원하는 데이터를 가져오거나 삽일할 수 있다. 이름에서 보듯이, 데이터가 구조화된(Structured) 테이블을 사용하는 데이터베이스에서 활용할 수 있다. SQL을 사용할 수 있는 데이터베이스와 달리, 데이터의 구조가 고정되어 있지 않은 데이터베이스를 NoSQL이라고 한다. 관계형 데이터베이스와는 달리, 테이블을 사용하지 않고 데이터를 다른 형태로 ..