2023/09/19 2

[Spring Boot][KoLiving] 3-2 Sign-up

이전 포스팅 2. 패스워드 설정 악의적인 공격 입력된 패스워드의 데이터는 데이터베이스에 평문으로 저장되면 안됩니다. 데이터베이스가 공격받아 아이디-패스워드가 노출될 수 있습니다. SQL Injection 등 패스워드 정보를 보호하기 위해 부호화를 통한 보안 방식이 권고되었습니다. 단방향 해싱 장점 보안성 해싱 값이 노출되더라도 원본을 알아내기 어렵습니다. 비선형 연산, 혼돈, 확산 등의 성질을 근거로 해시 함수의 복구 안전성이 확보됩니다. 적은 연산 입력받은 패스워드 값이 저장된 해싱값과 일치하는지 여부를 쉽게 얻을 수 있습니다. 단점 레인보우 테이블 단방향 해시값에 대응되는 다양한 원본값을 미리 계산해둔 테이블입니다. 이를 통해 해시값과 일치하는 원본 비밀번호를 빠르게 찾을 수 있습니다. BCrypt ..

Spring/Spring Boot 2023.09.19

[Spring Boot][KoLiving] 3-1 Sign-up

안녕하세요. 이번에는 회원가입에 대해 포스팅하겠습니다. 저희 팀에서는 "인증 이메일을 통해 인증을 받고 회원가입을 진행시키자" 라는 의견이 모였습니다. 저는 이번에 처음으로 인증 이메일을 구현해 보았는데요. 처음 구현해보는 거라 시행착오를 많이 겪었습니다. 그 과정속에서 제가 어떻게 생각했고 구현해 나갔는지 공유해드리려 합니다 1. 이메일 인증 이메일 인증 Flow 1. 해당 이메일의 유효성 검사 2. 인증 이메일 전송 유저 테이블의 정규화가 필요합니다. 사용자가 인증 이메일을 받았지만 실제로 인증 절차를 진행하지 않은 경우가 발생할 수 있습니다. ConfirmationToken 테이블 EMAIL 이메일 발송을 요청한 이메일 TOKEN 서버에서 인증에 대한 검증을 위해 저장합니다. - UUID형 TOKE..

Spring/Spring Boot 2023.09.19