100% 완벽한 보안은 존재하지 않는다.
그럼 왜 보안에 신경쓰는가? ⇒ 보안이 뚫리는 시간의 지연을 주기 위해
ex) 2014년 국민 - 5300만, 롯데 - 2500만, 농협카드 - 2500만, 2014년 KT 1200만건 유출
데이터를 (설계한 케이스 외에는, 절대로) 주지 않는 것
사고발생시 조치될 시간을 버는 것
[암호화 처리를 한 정보]
user_nm_enc
: 사용자 정보, mobile_no_enc
: 핸드폰 번호
account_no_enc
: 계좌번호, amount_enc
: 금액
인코딩이 되어있는 코드에서 별도의 인증된 API를 거치면 사용자의 정보가 나온다.
⇒ 금융권 내부에서 이름, 전화번호, 주민등록번호 등등을 DB에 그대로 가지고 있지 않고 모두 암호화해서 넣어둔다.
MSA를 쓸 때 서버와 서버 간의 내부 시스템에도 https를 사용하자
LetsEncrypt도 MSA 때문에 나온 것이다.
Q. Legacy와 Trendy의 차이? accessToken과 jwt
accessToken만 사용했다면(JWT 사용하지 않은 경우) server와 db간에 있어서 굉장이 불필요한 부하이다.(인증됨? 아님?)
JWT는 인증이 가용한 시간 내에서는 서버에서 모든 인증을 파악하여(DB까지 가지 않음) 인증을 마침 ⇒ DB쪽의 부하를 줄임
jwt의 header, payload, hash에서 가장 중요한 건 payload이다.
accessToken이 만료되었을 때 refreshToken으로 인증을 연장시킨다? ⇒ 모바일에서는 개인이 사용하고 개인이 인증하는 것이기 때문에 가능하다. (사실 좋은 방법이 아님)
하지만, 웹 페이지에서는 내가 늘 들고 다니는 것이 아니기 때문에 (즉, 내가 자리를 비웠을 때) 정보가 방치됨
따라서, accessToken이 만료되었을때 refreshToken으로 연장시키는 것이 아니라 refreshToken으로 accessToken, refreshToken을 다시 재발급 받아야한다.
만약, 웹과 앱 모두 구현하는 플랫폼이면 인증처리를 다르게 해야한다. request에서 웹인지? 앱인지? 같이 넘어와서 처리를 다르게 하기