- HTTPS는 HTTP에 Secure를 포함한 것이다.
- HTTP에 담긴 데이터를 암호화하여 공격에 대비한다.
🍵 공격자에 의해서 요청 및 응답이 탈취될 수 있다.- HTTPS의 특징으로 인증서, CA, 비대칭 키 암호화가 있다.
- 현업에서 HTTPS 프로토콜을 사용하는 것이 일반적이다.
- HTTPS 프로토콜은 인증의 중요한 부분을 차지한다.
🍏 인증서를 통해서 데이터 제공자의 신원을 보장하고 도메인에 종속되게 한다. (인증서 도메인과 응답 도메인을 서버가 비교한다.)
🥟 mkcert을 이용해서 로컬 환경에서 신뢰할 수 있는 인증서를 만들 수 있다.
🍖 CA(certificate Authority)는 공인 인증서 발급 기관이다.
🌹 비대칭 키 암호화는 암호화와 복호화를 하는데 있어서 쌍이되는 서로 다른 키를 사용하는 것을 의미한다.
🍰 해커가 직접 데이터에 접근할 수는 없지만, 쿠키를 사용하여 로그인하며 예측할 수 없는 요청이나 파라미터를 가지면 CSRF의 위험이있다.
🍰 CSRF 토큰을 사용하거나 same-site 쿠키를 사용해 예방한다.
- Hasing은 암호화의 기본으로, 일련의 정보를 통한 임의의 방식으로 다른 형태로 데이터를 변환하는 것을 의미한다.
- 해당하는 일련의 정보가 있어야 정보를 이해할 수 있다.
- 알고리즘을 이용해 정보를 관리한다.
- 쿠키는 어떤 웹사이트에 들어갔을 때, 서버가 일방적으로 클라이언트에 전달하는 작은 데이터이다.
- 서버는 클라이언트에 인증 정보를 담은 쿠키를 전송한다.
- 클라이언트는 전달받은 쿠키를 요청과 같이 전송하여 Stateless 한 인터넷 연결을 Stateful 하게 유지할 수 있게 한다.
🧁 서버가 클라이언트에 데이터를 저장한다.
- 서버가 클라이언트에 유일하고 암호화된 ID를 부여한다.
🧃 Session을 이용한 인증에서 유저 정보는 서버에서 관리된다.
🧃 Token 기반 인증은 클라이언트에 암호화된 유저 정보를 담는다.- 한 번 서버에 인증을 성공했다면, 서버는 이미 유저 정보의 해시를 알고 있다.
- 즉, '인증에 성공한 것'을 서버가 알고있다면, 추후에 다시 인증을 할 필요가 없다.
☕ node.js 환경의 express에서는 express-session으로 세션을 관리할 수 있다.