오늘 배운 내용📚 로그인 인증 env 환경변수 jwt 추가 정리 내용📑 docker shutdown시 database 초기화 오늘 드디어 JWT에 대해서 수업을 들었습니다. 로그인 인증을 할 때 사용되는 세 가지 형태 세션, 쿠키, jwt를 알려주셨는데 그중에서 jwt를 집중적으로 배웠습니다. 아직 session과 cookie가 많이 사용되긴 하지만 이전에 작업했던 프로젝트에서 jwt를 사용했었기 때문에 조금 더 깊게 알 수 있는 계기가 되지 않을까 해서 집중해서 들었던 것 같습니다. 이번 과정을 통해서 그간 궁금했던 back과 front에서 jwt를 사용할 때 어떻게 주고받아 보안을 강화하는지 알 수 있었으면이라는 생각을 했습니다. 그리고 그간 괴롭던 docker의 database 초기화의 원인이 될만..
분류 전체보기
하나하나 확인 중에 있으며 문제가 또 발생할 경우 다양한 방법들을 작성할 예정입니다. 원인 발견(2023-12-31) 기존 도커 설정시에 db 아이디와 패스워드를 기본으로 설정을 해놓았는데 이 점을 파고들어서 익명의 누군가가 비트코인을 내놓으라는 요구를 하기위해 데이터베이스를 삭제하고 흔적을 남겨놓은것입니다. 데이터베이스가 삭제가 되면 이러한 폴더가 생성이 되고 이 안에 들어가서 확인을 해보면 이러한 흔적을 남겨놓고 가는데요 해석을 해 보자면 "삭제된 데이터베이스를 복구하고싶으면 48시간 이내에 비트코인을 지불해라 지불 후에 우리에게 연락을 취하면 삭제된 데이터베이스를 복구해주겠다" 라는 뜻을 내포하고있습니다. MariaDB [README_TO_RECOVER_A]> select * from RECOVER..
우리가 웹사이트를 이용하다 보면 '세션이 만료되어 로그아웃 되었습니다.' 혹은 ' 세션이 만료되었습니다. 다시 로그인 후 시도해 주세요.'와 같은 문구를 만날 수 있는데요 이는 곧 로그인이 풀렸다는 뜻이 됩니다. 인증 Authentication 인증은 곧 로그인을 이야기 합니다. 그렇다면 우리가 로그인이 필요할 때가 언제가 있을까요? 쇼핑몰 이용시 장바구니 이용할 때 쇼핑몰 상품을 구매할 때 마이페이지 들얼갈 때 즉 사이트에서 가입되어있는 유저만 이용할 수 있는 기능을 이용할 수 있게 도와줄 수 있는 것을 말합니다. 인가 Authorization 가입되어있는 사람들 중에서도 관리자와 일반유저를 나눠서 접근 페이지가 다를 때 해당 페이지에 접근 권한이 존재하는가를 확인할 때 사용하는 것을 말합니다. 관리자..
env 환경변수를 사용하는 이유 개발을 하다 보면 외부에 노출이 되면 안 되는 값들이 존재합니다. 예를 들어서 데이터베이스의 정보 혹은 인증 정보와 같은 값들은 보안을 신경 써 주어야 하는데 이때 사용하는 것이 바로 env 환경변수 파일입니다. 그렇다면 env 환경변수가 무엇일까요? env 환경변수란? env 환경변수는 말 그대로 프로젝트에서 동작하는 방식에 영향을 미치는 동적인 값들을 모아놓은 정보를 말합니다. env 사용 전 준비 npm install dotenv env를 사용하기 앞서서 일단 npm에서 dotenv를 설치해 줍니다. 설치를 했으면 env 파일을 만들어야 되겠죠? env 파일은 어디에 생성을 해야 할까요? 바로 프로젝트의 최상단폴더에 생성을 해야 합니다. 만드는 건 아주 간단합니다. ..
리팩토링 정리 1. 불필요한 코드 (Map 객체 잔재) + console.log 삭제, if 중괄호 통일 2. 코드로 설명이 안되는 부분에 주석 작성 그외에는 주석 삭제 3. 문자열의 경우 값을 빼서 문자열 자체로 넣기보다 변수로 지정해서 변수를 입력하기(ex. sql) 4. 모든 callback 함수에 express-validator의 err값 호출이 들어가기 때문에 해당 코드는 모듈화 하여 코드에서 빼 작성 const express = require("express"); const router = express.Router(); const conn = require("../mariadb"); const { body, param, validationResult } = require("express-va..
오늘 배운 내용 📚 미니 프로젝트 Youtube 적용 : 목록 가기 유효성검사 express에 유효성검사를 할 수 있는 모듈이 존재하는지 처음 알았습니다. 항상 유효성검사를 콜백함수 안에서 진행했었는데 express-validator를 이용하여 미들웨어 쪽으로 코드를 옮기니 콜백함수에 들어가는 코드들이 많이 줄어들어서 간편해졌다고 생각을 했습니다. mysql2에 대한 궁금증도 생겨났습니다. 왜 똑같은 mysql2를 사용하는데 conn.query(sql, data, callback)을 하면 callback 함수 안의 매개변수들이 작동을 하지 않을까?를 생각하게 되었습니다. const mysql = require("mysql2"); const conn = mysql .createConnection({ hos..
유효성 검사(validation)란? 사용자가 입력한 값의 유효성을 검사하는 것을 말합니다. 즉, 타당성을 확인하는 작업입니다. 예시. 회원가입할때 조건을 생각해 봅니다. email 값이 존재해야 한다. ~~~~@email.com 형태여야 한다. password 값이 존재해야 한다. 최소 숫자와 영문 한 글자씩은 포함한 4글자 이상 이어야 한다. name 값이 존재해야 한다. 숫자가 들어오면 안 되고 문자열이어야 하며 2자 이상 이어야 한다. 그렇다면 이 많은 조건들을 어떻게 확인을 해야 할까요? if를 통해서 작업을 하게 되면 if 대 잔치가 벌어지기 때문에 우리는 이것을 유효성 검사를 통해서 진행을 하려고 합니다. 어떻게 유효성 검사를 할 수 있을까요? express-validator 우리는 유효성검..
리팩토링 정리 1. 불필요한 코드 (Map 객체 잔재) + console.log 삭제, if 중괄호 통일 2. 코드로 설명이 안되는 부분에 주석 작성 그외에는 주석 삭제 3. 문자열의 경우 값을 빼서 문자열 자체로 넣기보다 변수로 지정해서 변수를 입력하기(ex. sql) const express = require("express"); const router = express.Router(); const conn = require("../mariadb"); router.post("/login", async (req, res) => { const { email, password } = req.body; const select_sql = "select * from users where email = ?;" c..
오늘 수업 내용📚 미니 프로젝트 Youtube 적용 추가 정리 내용📑 timezone 설정 기존에 작업 중이던 Youtube에 db를 차근차근 적용 중에 있습니다. 기본적으로 user와 channel의 데이터베이스를 만들고 하나하나 sql문을 작성하면서 정리 중인데 현재 고민인 내용으로는 우리가 form 형식으로 내 회원번호가 1번이다 2번이다 이런 건 알 수 없기 때문에 대게 이메일이나 아이디, 혹은 생성자 이름을 받습니다. 그게 아니라면 URI로 회원번호를 받을 수도 있겠지요. 만약에 URI로 받지 않는다는 가정을 한다면 채널 생성에서 sql문은 총 3가지가 될 것 같다는 생각을 했습니다. 1. 채널명 중복 확인, 2. 유저번호 받기, 3. 채널생성 만약 2번을 진행하지 않는다면 채널생성에 꼭 필요한..