https
- HTTP프로토콜의 암호화된 버전
- 암호화를 위해 SSL이나 TLS을 사용한다.
- 비대칭 키 암호화(암호화화 복호화에 사용하는 키가 다르다)를 사용한다.
- 사용자는 공개 키를 사용, 서버는 개인 키를 사용
- CA(Certificate Authority)는 신뢰할 수 있는 사이트임을 증명하는 SSL인증서를 발급하고, 클라이언트(브라우저)에게 공개 키를 제공한다.
- 키는 통신의 시작 부분에서만 사용한다.
hashing
- 어떠한 문자열에 임의의 연산을 적용해 다른 문자열로 변환하는 것. SHA256등의 알고리즘 사용
salt
- 암호화 해야 하는 값에 별도 값을 추가한 뒤 암호화를 하는 것
- 유저와 패스워드 별로 유일한 값을 가져야 한다.
- 비밀번호를 변경할 때마다 새로운 salt를 사용해야 한다.
- salt는 재사용하면 안되고, DB의 유저 테이블에 저장되어야 한다.
쿠키
Session
- 서버는 중요한 데이터를 암호화된 세션 아이디로 저장
- 클라이언트는 저장된 세션 아이디로 작업 수행
- 쿠키와 다르게 접속 상태를 서버에 저장한다.
- 하나의 서버에서 상태를 관리하기 때문에 서버에 부담이 가고 분산에 불리하다. 쿠키와 같이 XSS공격에 취약하다.