클라이언트가 서버에 요청을 보내고, 서버가 응답할 때 인증서와 함께 데이터를 전달합니다.
인증서(도메인)이 응답객체(도메인)과 같은지 비교하여 옳바른 데이터임을 확인할 수 있습니다.
인증서를 발급하는 공인 기관입니다.
하나는 클라이언트한테 공개하고, 다른 하나의 키는 숨겨둔다.
클라이언트에서 서버에 요청을 보내고, 서버는 클라이언트에 응답합니다. (단순한 원리지만 보안상의 이슈가 발생할 수 있습니다.)
서버에서 디비에 정보를 요청하고 받을 때 보안상의 이슈가 발생할 수 있습니다.
암호화는 일련의 정보를 임의의 방식을 사용하여 다른 형태로 변환하여 해당 방식에 대한 정보를 소유한 사람을 제외하고 이해할 수 없도록 '알고리즘'을 이용해 정보를 관리하는 과정
암호화해야 하는 값에 별도의 값을 추가하여 결과를 변형하는 것
암호화만 할 경우 해시된 결과가 항상 동일하다.
원본값에 임의로 약속된 별도의 문자열을 추가하여 해시를 진행하면 기존 해시값과 전혀 다른 해시값이 반환되어 알고리즘이 노출되더라도 원본값을 보호할 수 있다.
기존: (입력한 암호) => (Hash 된 암호)
Salt 사용: (입력한 암호 + Salt) => (Hash 된 암호)
어떤 웹사이트에 들어갔을 때, 서버가 일방적으로 클라이언트에 전달하는 데이터
해당 도메인에 대해 쿠키가 존재하면 웹 브라우저는 도메인에게 http 요청 시 쿠키를 함께 전달한다.
사용자의 선호, 테마 등 장시간 보존해야하는 정보 저장에 적합하다.
(장바구니 정보, 로그인 상태 유지 등)
MaxAge, Expires
공공에서 로그아웃을 안 한 경우
서버에서 쿠키의 MaxAge 혹은 Expires 옵션을 통해 유효 기간 지정, 일정 시간 후 자동 소멸된다. 하지만 남아있는 쿠키가 있을 경우 정보를 탈취당할 수 있다.
HttpOnly
Xss 공격에 취약하기 때문에 HttpOnly 옵션을 통해 보안을 강화할 수 있다.
(민감한 정보나 개인정보는 담지 않는 것이 좋다.)
SameSite
옵션에 따른 서버 쿠키 전송 여부
None 옵션은 위험할 수 있기 때문에 Secure 쿠키 옵션을 사용하는 것이 좋다.