[python] 웹 서버에 쿠키 관리 기능 추가하기

쿠키(cookie)는 웹 사이트에서 사용자의 상태 정보를 저장하는 작은 데이터 조각입니다. 웹 애플리케이션은 쿠키를 사용하여 사용자를 추적하고 인증 상태를 유지하는 등 다양한 목적으로 활용할 수 있습니다. 이번 블로그 포스트에서는 Python을 사용하여 간단한 웹 서버에 쿠키 관리 기능을 추가해보겠습니다.

필요한 라이브러리 설치

먼저, 웹 서버와 쿠키 관리에 필요한 라이브러리를 설치해야 합니다. Python에는 여러 가지 웹 프레임워크 및 쿠키 관리 라이브러리가 있지만, 여기서는 Flask와 itsdangerous라이브러리를 사용하도록 하겠습니다.

pip install flask itsdangerous

Flask 웹 서버 설정

Flask는 Python으로 작성된 경량 웹 프레임워크로, 웹 서버를 쉽게 구축할 수 있도록 도와줍니다. 다음은 간단한 Flask 웹 서버 설정 예제입니다.

from flask import Flask, request, make_response

app = Flask(__name__)

@app.route('/')
def index():
    # 쿠키 가져오기
    cookie = request.cookies.get('my_cookie')
    if cookie is None:
        # 쿠키가 없을 경우 생성
        resp = make_response('쿠키를 생성했습니다.')
        resp.set_cookie('my_cookie', 'my_value')
        return resp
    else:
        # 쿠키가 이미 존재하는 경우
        return f'현재 쿠키 값: {cookie}'

if __name__ == '__main__':
    app.run()

위 코드는 기본적인 Flask 웹 서버를 설정한 예제입니다. 루트 경로(“/”)에 접근하면 쿠키(“my_cookie”)를 체크하고, 쿠키가 없는 경우에는 생성하고 존재하는 경우에는 쿠키 값을 반환합니다.

쿠키 생성 및 관리

위 코드에서 set_cookie() 함수를 사용하여 쿠키를 생성하고 설정합니다. 해당 함수는 Flask의 make_response() 함수를 통해 반환되는 응답 객체에 사용할 수 있습니다. 이를 통해 쿠키의 이름, 값을 설정할 수 있습니다.

쿠키는 클라이언트 측에서 관리되며, 웹 서버는 클라이언트로부터 온 요청 헤더에 쿠키 정보를 읽어올 수 있습니다. Flask에서는 request.cookies 속성을 사용하여 쿠키 정보에 접근할 수 있습니다.

토큰 기반 쿠키 관리

보안 상의 이유로 인해 쿠키의 값을 클라이언트에 그대로 저장하지 않을 때가 있습니다. 대신 토큰(Token)을 사용하여 쿠키 값을 암호화하고 클라이언트에 전달할 수 있습니다. 이를 위해 itsdangerous 라이브러리를 활용할 수 있습니다.

from itsdangerous import URLSafeSerializer

# 시크릿 키 생성
secret_key = 'my_secret_key'
# 쿠키 값을 암호화/복호화할 시리얼라이저 생성
serializer = URLSafeSerializer(secret_key)

# 쿠키 생성 및 암호화
cookie_value = 'my_value'
encrypted_cookie = serializer.dumps(cookie_value)

# 쿠키 복호화
decrypted_cookie = serializer.loads(encrypted_cookie)

위 코드에서는 URLSafeSerializer 객체를 생성한 후, dumps() 메서드를 사용하여 쿠키 값을 암호화합니다. 복호화는 loads() 메서드를 사용하여 수행합니다. 이렇게 생성된 암호화된 쿠키 값을 클라이언트에 전달하고, 클라이언트에서는 이를 복호화하여 사용할 수 있습니다.

결론

이번 블로그 포스트에서는 Python을 사용하여 간단한 웹 서버에 쿠키 관리 기능을 추가하는 방법을 알아보았습니다. 쿠키를 사용하면 웹 애플리케이션의 사용자 추적 및 인증 관리 등 다양한 기능을 구현할 수 있습니다. Flask와 itsdangerous 라이브러리를 활용하면 쉽고 간편하게 쿠키 관리 기능을 추가할 수 있습니다.