July 8, 2019

Python Flask - Session

Flask에서 세션을 사용하기 위해 "Secret Key"(비밀 키)로 서명된 쿠키를 사용하여, 구현됩니다.

session["변수명"] = "값" 같은 형태로 세션을 변수에 저장할 수 있으며,
session.pop("변수명", None) 또는 session.clear() 를 통해 세션 변수를 삭제할 수 있습니다.


from flask import Flask,session,escape

app.secret_key = "ABCDEFG"

@app.route("/")
def index():
    if "username" in session:
        return "Logged in as %s " % escape(session["username"])
    else:
        return "You are not logged in"


@app.route("/session")
def login():
    session["username"] = "DongDongE"
    return "Good~!"


@app.route("/out")
def session_out():
    session.pop("username", None)
    # session.clear()
    return "Session out"


app.py




[Session Check]

서버에 접속시 맨처음 "index()" 함수가 실행되어, 조건문을 비교하여 세션에 "username" 변수가 있는지 체크합니다.

존재하지 않으면, [Session Check] 사진처럼 출력됩니다.

또한 세션이 존재하면 "Logged in as DongDongE"가 출력됩니다. 세션의 값을 출력시 escape() 함수를 사용하여 안전하게 HTM-safe Sequences로 변환합니다.

예를 들어 XSS에 악용되는 "<" 또는 ">" 문자열을 "&gt" 이런식으로 변환합니다.




[Session Create]

"/session" 으로 접근하면 session의 "username" 변수에 "DongDongE"가 생성되고, 사용자에게 session Token를 반환합니다.




또한 "/out"에 접속하면 현재 가지고 있는 "username" 세션의 값을 제거 하거나 모든 세션을 제거합니다.