데이터베이스에 민감 정보를 저장하고 관리하는 것은 중요한 일이다.
패스워드를 평문으로 저장하면 안된다.
평문일 경우 데이터베이스에 접근할 수 있는 누구든지 데이터를 확인할 수 있게 된다.
데이터베이스에 패스워드를 안전하게 저장하기 위해서는 어떻게 하면 될까?
Open Web Application Security Project (OWASP)에서는 안전한 패스워드 저장에 대한 가이드라인을 제시하고 있다.
- Use a modern hashing algorithm
- Salt the password
해시 함수를 통해 단방향 암호화를 진행함으로써 복호화가 불가능하게 한다.
OWASP 가이드 라인에 따르면 Salt는 랜덤하고 유니크한 문자열이다.
Password에 Salt를 추가한 뒤 해시 함수를 통해 더 안전하게 암호화를 진행한다.
디비에 저장되는 데이터와 유저의 로그인 과정을 조금 더 자세히 알아보자.
유저가 입력하는 password에 랜덤하게 생성된 salt 문자열을 추가하고 해시 함수를 통해 암호화를 진행한 뒤 디비에 암호화된 데이터와 salt 문자열을 저장한다. (salt 문자열은 평문으로 저장)
유저가 로그인을 시도하면 입력된 password에 디비에서 해당 유저로 저장된 salt 값을 가져와서 함께 해시 값을 계산한다. 계산된 해시 값이 디비에 저장되어 있는 해시 값과 일치하면 로그인 성공 !
참고)
'소프트웨어 개발' 카테고리의 다른 글
안정 해시 설계에 대해 알아보자 (0) | 2024.02.23 |
---|---|
QR 코드를 통한 결제는 어떻게 동작할까? (0) | 2024.02.21 |
카프카는 왜 빠를까? (0) | 2024.02.19 |
[Redis] 레디스의 주요 명령어에 대해 간단히 알아보자 (0) | 2024.02.18 |
[Redis] 레디스의 특징에 대해 간단히 알아보자 (0) | 2024.02.17 |