유저의 비밀번호는 절대 비밀번호 그대로 DB에 저장하지 않음
- DB가 해킹 당하면 유저의 비밀번호도 그대로 노출될 뿐더러 내부 개발자나 인력이 그 정보를 볼 수있음 -> 유저의 비밀번호는 꼭 암호화해서 저장👤
비밀번호 암호화에는 단방향 해쉬 함수(one-way-hash function)가 일반적으로 쓰임
ref) 단방향 해쉬함수란?
: 원본 메시지를 변환하여 암호화된 메시지인 다이제스트(digest)를 생성
원본 메세지를 알면 암호화된 메시지 알 수 있지만 그 반대는 안됨 그래서 one-way이다.
해시함수는 원래 패스워드를 저장하기 위한 것이 아닌 짧은 시간에 데이터를 검색하기 위해 설계된 것
그렇기 때문에 해시 함수는 본래 처리 속도가 최대한 빠르도록 설계된 속성을 이용해서
공격자는 매우 빠른 속도로 임의의 문자열의 다이제스트와 해킹할 대상의 다이제스트릴 비교 가능
이런 방식으로 패스워드를 추측하면 패스워드가 충분히 길거나 복잡하지 않은 경우에는 그리 긴 시간이 걸리지 않음
ref) Rainbow table
: 미리 해쉬값들을 계산해 놓은 테이블
두 가자 암호 알고리즘으로 기존 단방향 해쉬함수의 단점을 보완
JSON WEB TOKEN(JWT)
를 쓰면 인가가 수월함(서버가 유저 정보를 갖고 있으므로 데이터에서 유저의 권한 정보도 읽어들이면 됨)access token
을 통해 해당 유저 정보를 얻을 수 있으므로 해당 유저가 가지고 있는 권한(permission)도 확인가능 Header - Payload -Signature
로 구성되어 있다.access token
을 생성한다. access token에는 유저 정보 를 확인할 수 있는 정보가 들어가 있어야 한다 (예를 들어 user id).access token
을 첨부해서 보낸다.access token
을 복호화 한다.