[인증/보안]

thdy3k·2023년 12월 5일
0

Cookie

쿠키는 서버에서 클라이언트에 영속성 있는 데이터를 저장하는 방법입니다. 서버는 클라이언트의 쿠키를 이용하여 데이터를 가져올 수 있습니다.

그러므로 쿠키를 이용하는 것은 단순히 서버에서 클라이언트에 쿠키를 전송하는 것만 의미하지 않고 클라이언트에서 서버로 쿠키를 다시 전송하는 것도 포함됩니다.

쿠키 옵션들.

domain - 서버와 요청의 도메인이 일치하는 경우 쿠키 전송
path - 서버의 요청의 세부 경로가 일치하는 경우 쿠키 전송
Max-Age/expires - 쿠키의 유효기간 설정
httpOnly - 클라이언트에서 DOM을 이용해 쿠키에 접근하는 것을 막아주는 옵션.
httpOnly가 true면 document.cookie를 입력 시 쿠키를 조회할 수 없습니다.
secure - HPPTS 에서만 쿠키 전송 여부 설정
sameSite - cross-site 요청에 대한 쿠키 전송 여부 설정

sameSite
Lax : 사이트가 서로 달라도, GET 요청이라면 쿠키 전송이 가능하다.
Strict : 사이트가 서로 다르면, 쿠키 전송을 할 수 없다.
None : 사이트가 달라도, 모든(GET,POST,PUT 등등) 요청에 대해 쿠키 전송이 가능하다.

해싱의 목적 (Hashing)

그런데, 왜 복호화가 불가능한 암호화 방식을 사용하는 걸까요? 바로 해싱의 목적은 데이터 그 자체를 사용하는 것이 아니라, 동일한 값의 데이터를 사용하고 있는지 여부만 확인하는 것이 목적이기 때문입니다.

예시를 들어보겠습니다. 사이트 관리자는 사용자의 비밀번호를 알고 있을 필요가 없습니다. 오히려 사용자들의 비밀번호를 알고 있다면, 이를 얼마든지 악용할 수 있기 때문에 심각한 문제가 생길 수도 있습니다. 그래서 보통 비밀번호를 데이터베이스에 저장할 때, 복호화가 불가능하도록 해싱하여 저장하게 됩니다. 해싱은 복호화가 불가능하므로 사이트 관리자도 정확한 비밀번호를 알 수 없게 되죠.

그럼 서버 측에서 비밀번호를 모르는 상태에서 어떻게 로그인 요청을 처리할 수 있는 걸까요? 방법은 간단합니다. 해싱한 값끼리 비교해서 일치하는지 확인하는 것이죠. 꼭 정확한 값을 몰라도, 해싱한 값이 일치한다면 정확한 비밀번호를 입력했다는 뜻이 되기 때문에, 해싱 값으로만 로그인 요청을 처리하는 데에도 전혀 문제가 없습니다.

이처럼 해싱은 민감한 데이터를 다루어야 하는 상황에서 데이터 유출의 위험성은 줄이면서 데이터의 유효성을 검증하기 위해서 사용되는 단방향 암호화 방식입니다.

0개의 댓글