When You Are Logged Out After Logging In: Steps to Check the Domain, Path, and Secure Attributes of Cookies
1. λ‘κ·ΈμΈ μ±κ³΅ νλ©΄λ§μΌλ‘λ λΆμ‘±ν©λλ€
λ‘κ·ΈμΈ λ²νΌμ λλ κ³ μ±κ³΅ λ©μμ§λ λμλλ° λ€μ νμ΄μ§μμλ λΉνμμΌλ‘ νμλ μ μμ΅λλ€. μλ²κ° μΏ ν€λ₯Ό λ°κΈνμ§ μμκ±°λ λΈλΌμ°μ κ° μ μ₯νμ§ μμμ μλ μκ³ , λ€μ μ£Όμλ‘ μΏ ν€λ₯Ό 보λ΄μ§ μμμ μλ μμ΅λλ€. μΏ ν€λ λμ°©νμ§λ§ μλ²κ° μΈμ μ μ°Ύμ§ λͺ»νλ κ²½μ°λ μμ΅λλ€.
μ΄ κΈμ μ΄ λ¨κ³λ₯Ό μμλλ‘ λλλ μ§λ¨ λ°©λ²μ λλ€. μ€μ κ³μ μΌλ‘ μ€ννκΈ° μ μ ν μ€νΈ κ³μ κ³Ό κ°λ° νκ²½μ μ€λΉνμΈμ. μΏ ν€ κ° μ체λ₯Ό μΊ‘μ²ν΄ 곡κ°ν νμλ μμ΅λλ€. μ΄λ¦κ³Ό μ μ© λ²μ, λ§λ£ μκ°, μ°¨λ¨ μ¬μ λ§μΌλ‘λ λ¬Έμ λ₯Ό μ’νλ λ° λμμ΄ λ©λλ€.
2. 첫 λ¨κ³λ λ‘κ·ΈμΈ μλ΅μ Set-Cookieμ λλ€
λΈλΌμ°μ κ°λ°μ λꡬμ Network νμμ λ‘κ·ΈμΈ μμ²κ³Ό μ΄λ μλ΅μ νμΈν©λλ€. Set-Cookieκ° μ΄λ μλ΅μ λΆμλμ§ λ¨Όμ μ°Ύμ΅λλ€. μ΅μ’ νμ΄μ§μ ν€λλ§ λ³΄λ©΄ μ€κ° μ΄λμμ λ°κΈλ μΏ ν€λ₯Ό λμΉ μ μμΌλ―λ‘ νμνλ©΄ μμ² κΈ°λ‘μ 보쑴ν©λλ€.
ν€λκ° μλ€λ©΄ μ ν리μΌμ΄μ μ μΏ ν€ μ€μ μ½λμ νλ‘μ μ²λ¦¬λΆν° νμΈν©λλ€. μλ² λ‘κ·Έμμ λ°κΈνλ€κ³ κΈ°λ‘λμ΄λ μ€κ° μλΉμ€κ° ν€λλ₯Ό λ°κΎΈκ±°λ μ κ±°ν μ μμ΅λλ€. λ€λ§ μ΄λ² κΈμ νΉμ CDN μ€μ μ΄ μμΈμ΄λΌκ³ λ¨μ νμ§ μμ΅λλ€. μλ³Έ μλ΅κ³Ό λΈλΌμ°μ κ° λ°μ μλ΅μ λΉκ΅ν μ μμ λ μ°¨μ΄λ₯Ό νμΈνμΈμ.
3. μ μ₯ λ²μμ μ μ‘ λ²μλ μμ±μ΄ κ²°μ ν©λλ€
Domainμ μΏ ν€κ° μ μ©λ νΈμ€νΈ λ²μμ μν₯μ μ£Όκ³ Pathλ μμ² κ²½λ‘ λ²μμ μν₯μ μ€λλ€. μμ±μ μλ΅νμ λμ κΈ°λ³Έ λμλ μ€μν©λλ€. μλ₯Ό λ€μ΄ νΉμ κ²½λ‘μλ§ μ μ©λλ μΏ ν€λΌλ©΄ λ€λ₯Έ νμ΄μ§μμ 보λ΄μ§μ§ μμ μ μμ΅λλ€. μλΉμ€κ° μ¬λ¬ νΈμ€νΈλ₯Ό μ°λμ§ ν¨κ» νμΈνμΈμ.
Secureλ 보μ μ°κ²°μμμ μ μ‘ μ‘°κ±΄μ΄λ©° HttpOnlyλ JavaScriptμ μ κ·Όμ μ νν©λλ€. HttpOnly μΏ ν€κ° document.cookieμ 보μ΄μ§ μλλ€κ³ μ μ₯ μ€ν¨λ‘ νλ¨νλ©΄ μ λ©λλ€. SameSiteλ λ€λ₯Έ μ¬μ΄νΈμμ μμ² κ΄κ³μμ μ μ‘μ μν₯μ μ€λλ€. κ°μ μ¬μ΄νΈμ κ°μ originμ ꡬλΆλ μ€μνλ―λ‘ μλΈλλ©μΈμ΄λΌλ μ΄μ λ§μΌλ‘ λͺ¨λ λΈλΌμ°μ μ μ± μ΄ κ°λ€κ³ λ³΄μ§ λ§μΈμ.
4. λΈλΌμ°μ μμ μΈ κ°μ§ νλ©΄μ λμ‘°ν©λλ€
Networkμμλ Set-Cookie λ°κΈκ³Ό λ€μ μμ²μ Cookie μ μ‘μ νμΈν©λλ€. Applicationμ Cookiesμμλ μ€μ μ μ₯λ μ΄λ¦, Domain, Path, Secure, SameSite, λ§λ£ μ 보λ₯Ό νμΈν©λλ€. Issuesλ μΏ ν€ μ°¨λ¨ μλ΄κ° μλ€λ©΄ κ·Έ μ¬μ λ κΈ°λ‘ν©λλ€. λꡬ μ΄λ¦κ³Ό μμΉλ λΈλΌμ°μ λ²μ μ λ°λΌ λ¬λΌμ§ μ μμ΅λλ€.
κ°μ μ΄λ¦μ μΏ ν€κ° μλ‘ λ€λ₯Έ Domainμ΄λ Pathλ‘ μ€λ³΅ μ μ₯λλμ§λ νμΈνμΈμ. μλ²κ° μλνμ§ μμ κ°μ μ½λ μν©μ΄ μκΈΈ μ μμ΅λλ€. λ¬Έμ λ₯Ό μ¬νν λ€ ν μ€νΈ νκ²½μ μΏ ν€λ₯Ό μ§μ°κ³ ν λ² λ λΉκ΅νλ©΄ μ€λλ κ°μ μν₯μ ꡬλΆν μ μμ΅λλ€. μ΄μ μ¬μ©μμ λͺ¨λ μΏ ν€λ₯Ό μΌκ΄ μμ νλ λ°©μμ λ¨Όμ κΆνμ§ μμ΅λλ€.
5. ν€λ λ¬Έμμ΄ μ€μ΅κ³Ό κ²μ¦μ νκ³
μλ μ½λλ PythonμΌλ‘ μΏ ν€ μμ± λ¬Έμμ΄μ μ½λ μμ μ€μ΅μ λλ€. μμμ demo κ°μ μ¬μ©νλ©° μ€μ λ‘κ·ΈμΈ μΈμ μ λ°κΈνμ§ μμ΅λλ€. μΆλ ₯μ΄ κΈ°λν μμ±κ³Ό κ°μμ§ νμΈνλ©΄ μμ± μ΄λ¦μ μ½λ μ°μ΅μ΄ λ©λλ€. κ·Έλ¬λ λΈλΌμ°μ κ° μ΄ μΏ ν€λ₯Ό λ°μλ€μ΄λμ§κΉμ§ μ¦λͺ νλ μ½λλ μλλλ€.
νΉν λΈλΌμ°μ μ μ¬μ΄νΈ κ΄κ³ νλ¨, HTTPS, μ¬μ©μ μ€μ , μ μΌμ μΏ ν€ μ νμ λ¨μ λ¬Έμμ΄ νμλ‘ μ¬νλμ§ μμ΅λλ€. μλ² μ½λμ μμ±μ΄ λ§μ 보μ¬λ μ€μ μμ² κ²½λ‘μμ μ μ₯Β·μ μ‘μ λ€μ κ²μ¬ν΄μΌ ν©λλ€. λ¬Έμμ΄ κ²μ¦, λΈλΌμ°μ κ²μ¦, μλ² μΈμ κ²μ¦μ λλμ΄ κΈ°λ‘νλ νΈμ΄ κ²°κ³Όλ₯Ό μ ννκ² μ€λͺ ν μ μμ΅λλ€.
6. μΏ ν€κ° μ μ‘λλ€λ©΄ μλ² κ²μ¦ λ¨κ³λ‘ μ΄λν©λλ€
λ€μ μμ²μ μ¬λ°λ₯Έ μΏ ν€κ° λΆμλ€λ©΄ μΈμ μ μ₯μ, λ§λ£, μλͺ κ²μ¦κ³Ό μλ² κ° μ€μ μ°¨μ΄λ₯Ό μ΄ν΄λ΄ λλ€. μ¬λ¬ μλ²κ° μλ‘ λ€λ₯Έ μλͺ ν€λ₯Ό μ¬μ©νκ±°λ μ¬μμ λ μΈμ μ λ³΄κ° μ¬λΌμ§λ ꡬ쑰λΌλ©΄ μ μ‘ λ¬Έμ μλ λ€λ₯Έ μ€ν¨κ° λ°μν μ μμ΅λλ€. μκ°λλ μμ€ν μκ³ μ°¨μ΄λ λ§λ£ νλ¨μ μν₯μ μ€ μ μμ΅λλ€.
μ¦μλ§ λ³΄κ³ HttpOnlyλ Secureλ₯Ό λλ λ°©λ²μ νΌνμΈμ. λ¨Όμ μ μ μμ²κ³Ό μ€ν¨ μμ²μ μ°¨μ΄λ₯Ό μ°Ύκ³ ν μ€νΈ νκ²½μμ μμ λ³κ²½μ κ²μ¦ν©λλ€. λ‘κ·ΈμΈ HTMLμ 곡μ μΊμλ‘ μ 곡νλ€λ©΄ κ°μΈνμ μΏ ν€ λ°κΈμ λΆλ¦¬νλμ§λ νμΈν©λλ€. κ³΅κ° HTML μΊμλ₯Ό λ리λ μμ κ³Ό λ‘κ·ΈμΈ μΏ ν€ λ³΄νΈλ ν¨κ» μ€κ³ν΄μΌ ν©λλ€.
7. μ μ λ‘κ·ΈμΈκ³Ό μ€ν¨ λ‘κ·ΈμΈμ λΉκ΅νκΈ°
ν μ€νΈ κ³μ μΌλ‘ μ μ λ‘κ·ΈμΈν μμ² ν 건과 μ€ν¨ν μμ² ν 건μ κ°μ μμλ‘ κΈ°λ‘ν©λλ€. μμ² μ£Όμ, νΈμ€νΈ, μλ΅ μ½λμ μΏ ν€ μ΄λ¦μ λΉκ΅νκ³ λΉλ° κ°μ μ μΈνμΈμ. μΏ ν€κ° λ°κΈλλ μλ΅μ΄ λ€λ₯΄λ€λ©΄ λ¨Όμ λ‘κ·ΈμΈ μ²λ¦¬ λΆκΈ°μ μ΄λ κ³Όμ μ νμΈν©λλ€. ν νλ©΄μ κ²°κ³Όλ§ λ³΄λ κ²λ³΄λ€ νλ¦ λΉκ΅κ° μ€λͺ νκΈ° μ½μ΅λλ€.
λ‘κ·ΈμΈ ν μ΄λνλ μ£Όμκ° www μ 무λ μλΈλλ©μΈμ λ°λΌ λ¬λΌμ§λμ§λ λ΄ λλ€. Domainκ³Ό Path μ μ© λ²μκ° κ·Έ μ£Όμμ λ§λμ§ νμΈνμΈμ. λ€λ§ 곡μ λ²μλ₯Ό λνλ©΄ λ€λ₯Έ νΈμ€νΈμλ μΏ ν€λ₯Ό 보λ΄κ² λ μ μμΌλ―λ‘ νμ λ²μλ₯Ό λ¨Όμ μ ν©λλ€. λ‘κ·ΈμΈμ κ³ μΉκΈ° μν΄ λͺ¨λ μλΈλλ©μΈμΌλ‘ 무쑰건 νλνλ λ°©μμ νΌν©λλ€.
HTTPS κ°λ° νκ²½κ³Ό HTTP λ‘컬 νκ²½μ ꡬλΆν©λλ€. μΏ ν€κ° μ μ₯λλμ§λΏ μλλΌ λΈλΌμ°μ κ° μ 보λ΄κ±°λ 보λ΄μ§ μμλμ§ νμΈνλ νΈμ΄ μ€μν©λλ€. λ‘컬μ νΉλ³ μ²λ¦¬μ μ΄μ HTTPS λμμ΄ λ€λ₯Ό μ μμΌλ―λ‘ ν νκ²½μ κ²°κ³Όλ§ μΌλ°ννμ§ μμ΅λλ€. μ€μ μ μ©ν μλ²μμ μ μ νλ¦κ³Ό λ‘κ·Έμμ νλ¦μ λͺ¨λ κ²μ¬νμΈμ.
λ‘κ·Έμμ λλ λ°κΈκ³Ό κ°μ μ΄λ¦, νΈμ€νΈ λ²μμ κ²½λ‘λ₯Ό μ¬μ©νλμ§ λμ‘°ν©λλ€. μ€λλ μΏ ν€κ° λ€λ₯Έ λ²μμ λ¨μ μμΌλ©΄ μ μΏ ν€μ μμ¬ λ³΄μΌ μ μμ΅λλ€. ν μ€νΈ νκ²½μμ κ°κ°μ μ μ₯ νλͺ©μ νμΈνκ³ μλΉμ€κ° μ€μ μ½μ μ΄λ¦μ λ‘κ·Έλ‘ λ¨κΈ°λ©΄ νλ¨νκΈ° μ½μ΅λλ€. λ‘κ·Έμλ κ° μ체λ₯Ό λ£μ§ μμλ λ©λλ€.
μ΅μ’ κΈ°λ‘μ λ°κΈ μ±κ³΅, μ μ₯ μ±κ³΅, μ μ‘ μ±κ³΅, μΈμ κ²μ¦ μ±κ³΅μ λλμ΄ νμν©λλ€. μ΄λ κ² νλ©΄ μ΄λ λ¨κ³μ μμ μ μμ²ν΄μΌ νλμ§ λΆλͺ ν΄μ§λλ€. λ¬Έμ λ₯Ό κ³ μΉ λ€ μλ‘μ΄ λΈλΌμ°μ νλ‘νκ³Ό κΈ°μ‘΄ νλ‘νμμ λͺ¨λ νμΈνλ©΄ μ€λλ κ°μ μν₯μ ꡬλΆν μ μμ΅λλ€. μΈμ¦ μμ±μ λλ λ°©μλ³΄λ€ μ¦κ±°λ₯Ό λͺ¨μ νμν λΆλΆλ§ μμ νμΈμ.
8. λ°λΌ νλ μμ
λͺ λ Ήκ³Ό μ½λλ νμ΅μ©μ λλ€. μ€λͺ μ νμλ μ€ν νκ²½μ ꡬλΆνκ³ μ μν ν΄λ λλ λͺ¨μ μ λ ₯μΌλ‘ μμνμΈμ.
μμ μ½λ
from http.cookies import SimpleCookie
cookie = SimpleCookie()
cookie.load('session_token=demo; Path=/; Secure; HttpOnly; SameSite=Lax')
m = cookie['session_token']
print('Path:', m['path'])
print('Secure:', bool(m['secure']))
print('HttpOnly:', bool(m['httponly']))
print('SameSite:', m['samesite'])9. κ²μ¦ κ²°κ³Όμ ν΄μ
| νμΈ νλͺ© | κ²°κ³Ό λλ κ²μ¦ λ²μ |
|---|---|
| Path | / |
| Secure / HttpOnly | True / True |
| SameSite | Lax |
| λΈλΌμ°μ μ μ₯Β·μ μ‘ | μ΄ μ€μ΅μμλ κ²μ¦νμ§ μμ |
λ‘컬 PythonμΌλ‘ μμ± λ¬Έμμ΄ νμ±λ§ κ²μ¦νμ΅λλ€. μ€μ κ³μ λ‘κ·ΈμΈ, λΈλΌμ°μ μ μ₯ μ μ± , νΉμ μ¬μ΄νΈμ μΈμ λμμ κ²μ¦ν μ¬λ‘λ μλλλ€.
10. μμ£Ό 묻λ μ§λ¬Έ
HttpOnlyλ₯Ό λλ©΄ λ‘κ·ΈμΈμ΄ κ³ μ³μ§λμ?
JavaScriptμμ μ 보μΈλ€λ μ΄μ λ§μΌλ‘ λμ§ λ§μΈμ. κ°λ°μ λꡬμμ μ μ₯κ³Ό μμ² μ μ‘μ λ¨Όμ νμΈν©λλ€.
μΏ ν€κ° μλλ° μ λΉνμμΈκ°μ?
μλ² μΈμ μ‘°νλ μλͺ , λ§λ£ κ²μ¦μ΄ μ€ν¨ν μ μμ΅λλ€. μΏ ν€ μ‘΄μ¬μ μΈμ μ ν¨μ±μ λ€λ₯Έ 쑰건μ λλ€.
λ‘κ·Έμμμ κ°λ§ λΉμ°λ©΄ λλμ?
λ°κΈ λμ λ§λ λ²μλ‘ μμ νλμ§ νμΈν΄μΌ ν©λλ€. κ°μ μ΄λ¦μ λ€λ₯Έ κ²½λ‘ μΏ ν€κ° λ¨λ κ²½μ°λ κ²ν νμΈμ.
11. 곡μ μ°Έκ³ μλ£
λμ μ μμ μ΅μ μ μλ μ μμ λ¬Έμμμ νμΈν μ μμ΅λλ€. λ³Έλ¬Έμ μ¬λ‘μ μμ λ νμ΅μ μν΄ λ 립μ μΌλ‘ ꡬμ±νμ΅λλ€.
μμ μ λ ₯μ νμ΅μ© λͺ¨μ μλ£μ λλ€. μ€μ νκ²½μ μ μ©ν λλ λ³Έλ¬Έμ μλ΄ν κ²μ¦ λ²μμ 쑰건μ νμΈνμΈμ.
π¬ 0 Comments