코딩 개발

코딩 개발/Javascript

Express - JWT

JWT(json web token) $ npm install jsonwebtoken --save 다운로드한 후 하기 코드 작성 (1): jsonwebtoken 라이브러리 import (2): 실제로 전달할 내용인 Payload 정의 (3): Secret Key, 실제로 Secret Key는 노출되면 안 되기 때문에 환경변수로 관리해 주어야 합니다. (4): sign() method로 JWT 발급, 첫번째 인자로 Payload가 두번째 인자로 Secret Key가 들어 갑니다. 세번째 인자로 option을 추가 할 수 있는데, option이 존재하지 않으면 HS256 알고리즘으로 JWT가 발급 됩니다. JWT 확인 (1): verify() method로 JWT의 Payload 확인, 첫번째 인자로 JWT가..

코딩 개발

MYSQL - WITH

WITH A AS (SELECT * FROM JULY UNION ALL SELECT * FROM FIRST_HALF ) SELECT FLAVOR FROM A GROUP BY FLAVOR ORDER BY SUM(TOTAL_ORDER) DESC LIMIT 3 두개의 테이블을 합치는 WITH 문입니다. WITH를 사용하여 JULY라는 테이블과 FIRST_HALF 라는 테이블을 UNION을 이용하여 합친 것을 A라는 테이블로 정의를 합니다. 합쳐진 table A에서 FLAVOR column을 선택하고 합쳐진 total_order의 합을 FLAVOR를 그룹화하여 TOTAL_ORDER의 합계로 순서를 정한 후 위에 3가지 맛을 꺼내오는 데이터입니다. 저도 다른 사람들의 블로그를 읽으면서 예시를 보여주면 좋겠다고 생..

코딩 개발

MYSQL - UNION

MySQL 등의 RDBMS에서 사용하는 Union연산자는 여러 테이블에 존재하는 같은 column의 값을 한번의 쿼리로 추출할 수 있도록 돕습니다. Union을 사용할 때 주의점이 있습니다. 1. 대응하는 필드의 이름이 같아야 한다. 같지 않다면 AS를 사용하여 같게 만듭니다. 2. 대응되는 각 필드의 타입이 같아야 합니다. 프로그래머스 코딩테스트에 나온 문제를 예로 들어보겠습니다. (감사합니다. 프로그래머스♥) 여러테이블에 존재하는 같은 column을 하나로 뭉치게하는 union문을 사용하면 잘 합쳐지겠죠? 일단 다른 조건들은 확인하지 않고 진행해 볼게요. SELECT sales_date, product_id, user_id, sales_amount FROM online_sale WHERE sales_..

코딩 개발

Bcrypt & JWT

Bcrypt Bcypt는 브루스 슈나이어가 설계한 키(key) 방식의 대칭형 블록 암호에 기반을 둔 암호화 해시 함수로서 Niels Provos 와 David Mazières가 설계했습니다. Bcrypt는 레인보우 테이블 공격을 방지하기 위해 솔팅과 키 스트레칭을 적용한 대표적인 예 입니다. 2b : 해시 알고리즘 식별자 12 : Cost Factor로 Key Stretching의 수 (2의 12승번) 76taFAFPE9ydE0ZsuWkIZe : 16Byte 크기의 Salt, Base64로 인코딩된 22개의 문자 xWVjLBbTTHWc509/OLI5nM9d5r3fkRG : 24Byte의 해시 값, Base64로 인코딩된 31개의 문자 Bcrypt는 단방향 해시 알고리즘 입니다. 따라서 복호화가 불가능 합..

코딩 개발

암호화의 종류

단방향 암호화 단방향 암호화는 평문을 암호화 할 수는 있지만 암호화된 문자를 다시 평문으로 복호화가 불가능한 암호화 방법입니다.주로 해시 알고리즘을 이용하여 단방향 암호화를 구현 합니다. 단방향 암호화를 사용하는 주된 이유는 메시지 또는 파일의 무결성(integrity)을 보장하기 위해서 입니다. 원본의 값이 1bit라도 달라지게 되면 해시 알고리즘을 통과한 후의 해시값이 매우 높은 확률로 달라 집니다. 이를 통해 메시지나 파일이 원본인지 아닌지 확인 할 수 있습니다. 해시의 무결성을 보장하는 특징을 이용하여 저자서명, 파일 또는 데이터의 식별자, 사용자의 비밀번호, 블록체인 등에서 활용되고 있습니다. 대표적인 해시 알고리즘으로는 MD5, SHA 등이 있습니다. 하지만 단방향 암호화에는 한계가 존재합니다..

코딩 개발

Session & Token

웹 환경에서 사용자와 시스템 간에 데이터를 교환하기 위해 HTTP 방식을 사용합니다. HTTP 통신은 요청과 응답에 의해 동작하며, HTTP의 특징 중 가장 중요한 특징은 바로 Stateless 입니다. 문자 그대로 번역하면 State(상태) + less(없음) 을 의미합니다. 각각의 HTTP 통신(요청/응답)은 독립적 이기 때문에 과거의 통신(요청/응답)에 대한 내용을 전혀 알지 못 합니다. 이전의 상태를 전혀 알지 못 한다는 것은 무엇을 의미할까요? 매 통신마다 필요한 모든 정보를 담아서 요청을 보내야 합니다. 비유를 하자면, 마치 이미 자기소개를 한 사람에게 계속해서 똑같은 내용으로 자기소개를 해야하는 것과 같습니다. 따라서, 만약 로그인 후 상품 구매나 개인정보 수정 같이 여러번의 통신(요청/응답..

호소세
'코딩 개발' 카테고리의 글 목록 (32 Page)