쿠키와 세션(feat. 로그인 처리)

김철준·2023년 3월 15일
0

node.js

목록 보기
5/6

로그인을 구현하기 위한 방법으로는 쿠키와 세션이라는 2가지 방법이 있습니다.

로그인을 구현할 때 쿠키와 세션을 모두 사용할 수 있습니다. 둘 다 클라이언트와 서버 간의 인증을 관리하기 위해 사용되며, 보안적인 이슈와 편의성 등의 차이가 있습니다.

쿠키는 클라이언트의 브라우저에 저장되는 작은 데이터 파일입니다. 쿠키는 클라이언트의 상태를 추적하거나 인증 관련 정보를 저장하는 데 사용됩니다. 쿠키는 클라이언트 측에서 생성되기 때문에 서버에 저장하지 않아도 되며, 쿠키의 만료 기간이 지나면 자동으로 삭제됩니다.

반면에 세션은 클라이언트와 서버 간의 대화에서 생성되는 데이터입니다. 세션은 서버 측에서 생성되기 때문에 클라이언트의 브라우저에 저장되지 않습니다. 대신, 클라이언트는 서버에서 발급받은 세션 ID를 쿠키에 저장하여 인증에 사용합니다. 세션은 클라이언트가 로그아웃하거나 세션 유효 시간이 만료될 때까지 서버에 유지됩니다.

따라서 쿠키는 클라이언트에서 유지되며, 세션은 서버에서 유지된다는 차이가 있습니다. 이러한 차이점으로 인해 쿠키는 사용자의 브라우저에 데이터를 저장하여 사용자 경험을 개선하고, 세션은 서버에 데이터를 저장하여 더욱 안전한 사용자 인증을 보장합니다.

보안적인 측면에서는, 쿠키는 클라이언트에 저장되기 때문에 클라이언트에서 조작될 가능성이 있고, 민감한 정보를 저장할 경우 해킹 등에 취약할 수 있습니다. 반면 세션은 서버에 저장되기 때문에 클라이언트에서 조작할 수 없으며, 서버에서 적절한 보안 조치를 취하면 비교적 안전하게 사용할 수 있습니다.

따라서 보안성과 편의성 측면에서 쿠키와 세션을 선택하는 것은 각각의 프로젝트와 환경에 따라 다를 수 있습니다.

그렇다면 쿠키에 민감한 정보를 저장하기 위해서는 어떤 방법을 써야할까?

쿠키는 클라이언트 측에서 저장되기 때문에 민감한 정보를 저장하기에는 적합하지 않습니다. 하지만 쿠키를 사용해야 하는 경우, 보안상 안전하게 저장하는 방법으로는 암호화와 서명이 있습니다.

암호화를 사용하면 쿠키에 저장되는 데이터를 암호화하여 보안상 안전하게 저장할 수 있습니다. 클라이언트가 쿠키를 전송할 때, 서버에서는 해당 데이터를 복호화하여 사용합니다. 이러한 방법으로 보안성을 높일 수 있지만, 클라이언트에서도 복호화를 할 수 있기 때문에 완벽한 보안을 보장할 수는 없습니다.

서명은 데이터를 조작하지 않았는지를 확인하는 방법입니다. 서명을 사용하면 서버에서 클라이언트에게 보낸 쿠키가 클라이언트에서 조작되지 않았는지를 확인할 수 있습니다. 서버에서는 서명된 쿠키를 수신한 후, 쿠키의 서명을 검증하여 데이터가 조작되었는지 여부를 확인합니다.

이러한 방법으로 쿠키에 민감한 정보를 안전하게 저장할 수 있지만, 완벽한 보안을 보장할 수는 없으므로 민감한 정보를 저장해야 하는 경우는 세션 등 다른 방법을 고려해야 합니다.

profile
FE DEVELOPER

0개의 댓글