분류 전체보기
-
HTTP Cookies and Sessionexpress 2022. 1. 17. 12:00
쿠키와 세션 사용하는 이유? HTTP프로토콜의 특징에서 비롯되는 약점을 보완하기 위해 사용한다. 먼저 http프로토콜의 특징이자 약점을 살펴보자. HTTP프로토콜 1. Connectionless. Protocol 비연결지향 클라이언트가 서버에 요청했을때, 그 요청에 맞는 응답을 보낸 후 연결을 끊는다. 2. Stateless Protocol (상태정보 비유지) 클라이언트의 상태정보를 가지지 않는 서버처리방식. 클라이언트와 첫번째 통신에서 데이터를 주고받았다 해도, 두번째 통신에서 이전데이터를 유지하지 않는다. BUT, 실제로는 데이터유지가 필요한 경우가 많다. 정보가 유지되지 않으면 매번 페이지 이동시 마다 로그인을 해야하거나 장바구니에서 상품을 선택했는데 구매페이지에서 상품의 정보가 사라지거나 하는 경..
-
로그인 암호화, 사용자 비밀번호 암호화하기express 2022. 1. 16. 18:32
Bycrypt는 레인보우 테이블 공격 방지를 위해 솔트(Salt)를 통합한 적응형 함수 중 하나라고 한다. SHA 종류의 암호화는 GPU연산에 유리한 32비트 논리 및 연산만 사용하기 때문에 GPU 연산을 이용한 공격에 취약하다고 한다. 그래서 Bcrypt 설계자는 Blowfish를 이용해 구현했다고 함. 레인보우 테이블 : 해시 함수를 사용하여 변환 가능한 모든 해시 값을 저장시켜 놓은 표 솔트 : 데이터, 비밀번호, 통과암호를 해시 처리하는 단방향 함수의 추가 입력으로 사용되는 랜덤 데이터 1. bcrypt 모듈 설치 > npm install bcrypt 2. bcrypt모듈 불러오기+암호화 정도 설정 const bcrypt = require("bcrypt"); const saltRounds = 10..
-
"Duplicate entry '' for key 'users.PRIMARY'",Error records 2022. 1. 16. 12:33
프론트에서 값을 입력받아 mysql에 저장을 하려고 하는데 "Duplicate entry '' for key 'users.PRIMARY'",라는 에러가 나왔다. id값을 pk로 설정하고 useState("")에서 ""로 값을 받았는데 ""은 pk가 될 수 없어서 위와 같은 에러가 나타난거같다. 나는 당연히 id는 중복되면 안되니까 pk로 하면 되겠구나 싶었는데 그럴경우에 사용자가 탈퇴를 하면 곤란한 경우가 생긴다고 한다.(그사람이 작성한 게시물도 다 삭제를 해야하나 말아야 되나와 같은...) 만약 사용자가 탈퇴를 한 뒤, 누군가가 똑같은 아이디로 가입을 한다면 문제가 발생할 소지가 다분하다(새로 가입했는데 예전에 작성한 글의 작성자가 되어있던지). 그래서 보통 id에는 unique속성을 넣고 PK는 겹치..
-
default export, exportJavaScript 2022. 1. 15. 11:33
이 둘은 자바스크립트 모듈화를 할 때 사용되는 녀석이다. express로 코딩을하다가 오른쪽 그림과 같이 export는 안되는데 default export는 가능해서 이 둘의 차이를 알아보고자 포스트를 작성한다 먼저 MDN의 정의는 다음과 같다. export export 문은 JavaScript 모듈에서 함수, 객체, 원시 값을 내보낼 때 사용합니다. 내보낸 값은 다른 프로그램에서 import 문으로 가져가 사용할 수 있습니다. 구문 // 하나씩 내보내기 export let name1, name2, …, nameN; // var, const도 동일 export let name1 = …, name2 = …, …, nameN; // var, const도 동일 export function functionNam..
-
express 기초express 2022. 1. 14. 18:57
https://expressjs.com/ko/4x/api.html#req 서버 메소드들 나와있음 사용자가 브라우저를 통해 request를 서버에 준다. 서버는 그 request를 받고 response를 준다. const express = require('express') const POST = 4000; const app = express(); const gossipMiddleware = (req, res, next) => { console.log(`someone is trying go to ${req.url}`); next(); }; const handleHome = (req, res) => { //we(server) get req we return res return res.send("i am hom..
-
UseEffectReact 2022. 1. 13. 20:29
useEffect란? 리액트에게 렌더링 후 컴포넌트가 특정 함수를 실행하게끔 할 때 사용. 기본적으로, useEffect는 첫번째 렌더링(render)이 될 때 실행된다. useEffect 사용법 1.Update 컴포넌트가 렌더링될 때마다 매번 콜백이 호출 useEffect(()=>{ 함수} } ( 컴포넌트가 화면에 맨처음 랜더링 + 다시랜더링될 때(ex:state가 업데이트될 때 마다 컴포넌트는 다시 랜더링)) 다시 렌더링. 엄밀하게는 화면이 랜더링 된 후에 콜백이 실행됨. 여기서 문제가 생김. setState로 state값에 변화가 생겨 컴포넌트가 다시 렌더링 된다는 말은
-
프론트엔드 데이터 만들기 faker.js + json-servernpm 2022. 1. 11. 13:11
프론트엔드를 작업할때 데이터가 필요한 경우가 있다. 더미 데이터를 만들고 이를 바탕으로 백엔드를 간단하게 구현해놓으면 프론트 API를 작업하기에 편리하다. 현재 faker.js최신버전은 리포가 폭발되었으므로(2022년 1월 초 깃허브 삭제/ 해외에서는 꽤나 이슈가 되었다.) https://www.npmjs.com/package/@faker-js/faker @faker-js/faker Generate massive amounts of fake contextual data www.npmjs.com 위의 링크의 버전을 이용해서 해보겠다. 사용법은 초 간단하다 npm i @faker-js/faker 로 인스톨 후 노드에서 실행한다. require(@faker-js/faker)로 불러오고 위의 링크에 보면 다양한..