실시간으로 동작하는 서비스를 만들고 싶다면, 웹 소켓을 이용한다. 기존 HTTP는 클라이언트가 서버에 요청하고, 서버는 그에 해당하는 응답을 던져준다. 만약 서버에 공지사항이 생겼더라도, 클라이언트가 따로 그것에 대해 요청을 하지 않으면 서버가 클라이언트에게...
Continue reading...mingsayz blog
Dwitter – 서버 코드에서 중요한 두가지 (5)
보안성 현재의 코드에서 확인해보면, ‘jwtSecretKey’ 등 중요한 키값들이 코드내에 그대로 사용되고 있는 것을 볼 수 있다. 이것은 보안성에 문제가 된다. 보통 코드들을 코드 관리 툴(git 등)에 올리는데, 이 과정에서 이 키값들이...
Continue reading...Dwitter – 로그인 / 회원가입 Auth 구현(4)
JWT 를 이용하여 구현하기로 한다. JWT 사용 이유 서버가 RESTful api 기반 이기 때문 (즉 , http-only 쿠키를 보내주는 서버가 아닌, 다양한 클라이언트들을 위한 RESTful api) 세션 정보 저장을 위해 세션...
Continue reading...JWT (JSON Web Token)
JWT (JSON Web Token) JWT란, 2010년도에 개발되었으며 JSON을 이용하여 웹토큰을 주고받는 것을 의미한다. JWT 구성 JSON 오브젝트 베이스안에 Header, Payload, Signature 로 나누어져 있다. 여기에 사용자의 인증에 대한 모든 정보를 담는...
Continue reading...bcrypt
Bcrypt 는 패스워드를 안전하게 보관할 수 있도록 패스워드를 해싱하는 알고리즘을 의미한다. 사용자가 가입을 할 때 입력한 아이디와 패스워드를 그대로 데이터베이스에 저장하면, 제 3자가 서버에 있는 데이터베이스 정보를 읽었을 때 사용자의 아이디...
Continue reading...인증 (Authentication) ( session / cookie)
인증이란 어떤 의미일까? You are who you say you are ‘너는 너가 누구라고 말한 사람이다’ 라는 말이 있다. 인증 방법은 여러가지 이다. You know password pin-code You have mobile phone hardware...
Continue reading...Dwitter – 유효성 검사 적용 (3)
그럼 토이프로젝트 Dwitter에도 간단하게 유효성 검사를 적용해보자 👍 /server/router/tweets.js /server/middleware/validator.js 컨트롤러에서는 비즈니스 로직만을 갖고 있는게 좋고, 디펜던시를 가지고 있는 것은 좋지않으므로 라우터에서 처리하는 것이 좋다. 또한 여러 라우터를 가지고 있을 수...
Continue reading...데이터 Sanitization (살균 ? 🤔)
Sanitization 필요 이유 앞서 본 데이터 유효성 검사 이후, 데이터 sanitization 처리를 해줘야한다. 예를 들어, 위 포스팅의 최종 코드에서 아래와 같은 요청을 받으면 어떻게 될까 ? 상식적으로, request body 내의 name은...
Continue reading...Nodejs – 유효성 검사
Validation 이란? 클라이언트가 서버에게 특정한 요청이나 리소스를 만들기 위해서 body로 보내는 데이터들을 유효한지 / 정확한 데이터를 보내고 있는지 확인하는 것을 말한다. 스키마가 확정된 데이터베이스에서는 어떤 특정한 필드에 어떤 데이터 타입인지 다...
Continue reading...Dwitter – 서버구조 MVC 패턴으로 변경 (2)
MVC 이란? 어플리케이션을 Model, View, Controller 로 나눠서 가독성 / 유지보수 / 확장성을 늘리는 소프트웨어 디자인 패턴 Model 어플리케이션에서 필요한 데이터를 담는 영역 View 사용자에게 보여지는 순수 어플리케이션의 UI Controller View...
Continue reading...