이전의 비밀번호 암호화 글
https://pushvalue.tistory.com/42
pw 암호화(md5)후 DB에 저장하기
내 프로잭트의 비밀번호 저장 기능은 유저가 입력한 비밀번호 그대로 DB에 저장 된다 이렇게 되면 비밀번호가 노출될 위험이 있다 비밀번호가 그대로 저장되지않고 비밀번호의 해시값을 저장
pushvalue.tistory.com
테스트 코드를 만들면서
테스트코드 전용 데이터베이스가 필요했다
spring boot 에서 내장 데이터베이스를 지원 하기때문에
h2 데이터 베이스를 mysql 모드로 사용 하여
mysql 쿼리문도 연동 되도록 계획 했다
하지만 쿼리문이 완벽하게 연동 되지는 않았다
MD5 해시 함수와 sysdate 함수가 호환 되지 않았다
하는김에 sha256 으로 해싱하고 CURRENT_TIMESTAMP 으로 날짜를 뽑았다
하지만 해싱 함수를 변경하자마자 로그인이 안되는 문제가 생겼다
원인은 sha256의 해시값이 MD5의 해시값보다 문자열 길이가 길어서
기존에는 45바이트로 커버가 가능했지만
sha256은 해시값의 뒤를 잘라먹게 되었다
회원가입은 비밀번호의 해싱값을 저장한다
로그인은 비밀번호의 해싱값을 저장된 해싱값과 비교한다
해싱값이 저장되는 순간 일부만 저장 되어 전혀 다른 데이터가 되어 버렸고
비교,대조 값이 다르기 때문에 로그인 기능은 무조건 비밀번호를 잘못 입력했다고 판단 한 것이다
유저 비밀번호 컬럼의 속성을 45 바이트 에서 128 바이트로 수정 해주고 해당 문제를 해결 했다
ALTER TABLE `LFGservice`.`lfg_user`
CHANGE COLUMN `user_pw` `user_pw` VARCHAR(12) NOT NULL ;
'마구니 패치 노트' 카테고리의 다른 글
서버 해킹 대응 (0) | 2024.06.01 |
---|---|
OCI 리눅스 장애(비정상 정지) 원인 기록,결론 (1) | 2024.03.05 |
서버타임 동기화 (0) | 2023.05.06 |
자동 배포 개선/기능추가 (0) | 2023.03.31 |
SQL 쿼리 파라미터 바인딩 %?% 문제 (0) | 2023.03.03 |
댓글