구성
- 이메일, 이름, 패스워드의 간단한 정보만 사용
- 이메일의 형식이 올바른지 확인
- 비밀번호 최소 길이 확인
- 패스워드와 패스워드 확인 문자가 일치하는지 확인
회원정보 저장
- 데이터 베이스에 그대로 저장하면 관리자가 회원 비밀번호의 정보를 다 조회할 수 있음 -> 보안 취약점 발견!!!
Hash
- 문자열을 되돌릴 수 없는 방식으로 암호화 하는 방법
- hash 출력값을 이용해 사용자의 비밀번호를 알아낼 수 없음
- 비밀번호의 Hash 값을 데이터베이스에 저장하고, 로그인 시 전달된 비밀번호를 Hash하여 저장된 값과 비교해 로그인을 처리
사용 방법
const Hash = crypto.createHash('sha1');
hash.update(password);
hash.digest("hex");
구현하기
- 회원가입 페이지 구현
- script를 이용해 이메일 형식, 비밀번호 확인 / 문자 확인
- 이메일 : 정규표현식을 이용
- 비밀번호 길이 : password.length < 8
- 비밀번호 확인 : password != passwordConfirm
- form을 이용해 post 요청 전송
- 회원가입 처리 및 redirect
- 이메일, 이름, 비번 값 받아옴
- pwHash 사용
- User에서 이메일 찾아서 만약 이메일이 있다면 이메일이 있다고 출력
- 이메일이 없다면 이메일, 이름, password : pwHash 저장!!