비밀번호가지고 로그인 password : 로그인 인증할 때의 사용자가 입력한 비밀번호 userSalt : DB에 저장되어있는 사용자의 salt userPassword : DB에 저장되어있는 사용자의 암호화된 비밀번호(해시 값) 단방향 암호화이므로 복호화를 할 수 없다. 따라서 비밀번호 암호화했을 때의 비밀번호와 salt를 가지고 동일한 방법으로 암호화를 진행하여 나온 값과 비교한다. 이때 salt는 비밀번호를 생성했을 때의 값과 똑같은 값을 사용해야 한다. 그렇지 않으면 일치하지 않는다. 만약 일치한다면 true, 일치하지 않는다면 false를 반환하도록 한다. 최신 코드 export const verifyPassword = async (password, userSalt, userPassword) => ..
전체 글
안녕하세요. react, flutter, node.js에 관련해서 글을 쓰는 블로그입니다.반응형
단방향 암호화와 양방향 암호화 crypto는 단방향 암호화 방식이고, bcrypt는 양방향 암호화 방식이다. 단방향은 암호화할 수는 있어도 복호화해서 원래의 비밀번호를 알 수 없고, 양방향은 복호화해서 원래의 비밀번호를 알 수 있다. 그러나, Bcrypt는 Blowfish 알고리즘을 사용하기 때문에 해싱이 느리고 해싱에 엄청난 비용이 든다. 만약 해커가 브루트 포스같은 공격을 해대면 서버에 엄청난 부하가 가해진다. 암호화 복호화 단방향 가능 불가능 양방향 가능 가능 해시(hash) 해시(hash) : 해시 함수에 의해 얻어지는 값 해시 함수(hash function) : 해시 알고리즘(hash algorithm)이라고도 하며, 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수 키(key) : ..
커넥션 풀(DBCP)의 개념 웹 컨테이너(WAS)가 실행되면 데이터베이스에 연결된 Connection을 미리 만들어서 pool에 저장한다. 그 후, 클라이언트 요청이 오면 pool에서 Connection 객체를 빌려준다. 해당 객체의 임무가 완료되면 다시 Connection 객체를 반납 받아서 pool에 저장하는 프로그래밍 기법이다. 커넥션 풀 순서 사용자가 DB를 사용하기 위하여 Connection을 요청한다. Connection Pool에서 사용되지 않고 있는 Connection 객체를 제공한다. 사용자가 Connection 객체를 사용 완료하면 pool로 반환한다. 커넥션 풀(DBCP)의 장점 DB 접속 설정 객체를 미리 만들어 연결하여 메모리 상에 등록해 놓기 때문에 불필요한 작업(커넥션 생성, ..
body-parser npm install body-parser --save 를 하여 body-parser를 설치하여 준다. 이를 사용하는 이유는 클라이언트 POST request data의 body로부터 파라미터를 편리하게 추출하기 위해서이다. 프론트엔드에서 form등의 값을 가져올 때 undefined error를 마주하게 된다. req.body를 사용해서 가져오게 되면, body-parser를 사용하지 않는다면 기본값으로 undefined가 설정되어 있어서 그러한 오류가 난다. (Express v4.16.0 기준)express.js도 빌트인 body parser가 되어있다. 그래서 express.json, express.urlencoded도 가능하다. const bodyParser = require..
반응형