Cookie
λͺ©μ
HTTP Cookie λ μλ²κ° μ¬μ©μμ μΉ λΈλΌμ°μ μ μ μ‘νλ μμ λ°μ΄ν° μ‘°κ°μ΄λ€.
μ΄λ λκ° μΈ κ°μ§ λͺ©μ μ μν΄ μ¬μ©λλ€.
- μΈμ
κ΄λ¦¬ (Session Management)
- μλ²μ μ μ₯ν λ‘κ·ΈμΈ μ 보, λ°μ΄ν°μ λ±κ³Ό κ°μ μ 보κ΄λ¦¬
- κ°μΈν (Personalization)
- μ¬μ©μμ μ νΈ νΉμ μΈν κ°
- νΈλνΉ (Tracking)
- μ¬μ©μμ νλμ κΈ°λ‘νκ³ λΆμνλ κΈ°μ€ μ©λ
κ³Όκ±°μλ ν΄λΌμ΄μΈνΈμ μ μ₯νλ μ μΌν μλ¨μ΄μμΌλ HTTP μμ²μ μ€λ²ν€λκ° μ»€μ§ μ°λ €κ° μκΈ° λλ¬Έμ Modern Storage APIs μ μ’
λ₯μΈ Web Storage API(localStorage sessionStorage) λ₯Ό μ¬μ©νλκ²μ κΆμ₯νλ€.
νΉμ§
- ν΄λΌμ΄μΈνΈμ μ μ₯λλ ν€μ κ°μ΄ λ€μ΄μλ μμ λ°μ΄ν° νμΌ (νλλΉ 4KB μ΄ν)
- μ΄λ¦, κ°, λ§λ£λ μ§ (μΏ ν€μ μ μ₯μκ°), κ²½λ‘μ 보 λ±μ΄ ν¬ν¨λμ΄ μμΌλ©° λ°λμ μλ£νμ String μΌλ‘ ꡬμ±λλ€.
- μ¬μ©μκ° μμλ‘ μΏ ν€ λ°μ΄ν°λ₯Ό μ μ₯, μμ , μμ ν μ μλ€.
- μ¬μ©μκ° λΈλΌμ°μ μ€μ μΌλ‘ μΏ ν€μ μ¬μ©μ 무λ₯Ό μ€μ ν μ μλ€.
HTTP μ μ‘μμ μμ² ν€λμ μΏ ν€ κ°μ΄ λ€μ΄ μμ΄ μΏ ν€μ μλ£λ (λ°μ΄ν° μ¬μ΄μ¦) μ΄ ν° κ²½μ°
μ€λ²ν€λλ‘ μΈν μΉμλ² μλ¬κ° λ°μ ν μ μλ€.
μμ±
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
var expires = 'expires=' + d.toUTCString();
document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';
}
μ‘°ν
Pollyfill
function getCookie(name) {
if (typeof $.cookie === 'function') {
return $.cookie(name);
} else {
var cookie = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)');
return (cookie ? cookie[2] : '');
}
}
getCookie('userID');
λ³κ²½
jQuery Library μ¬μ©μ
$.cookie('userID', 'μ€λ¦¬', { domain : '.sudals.com', path: '/'});
μμ
jQuery Library μ¬μ©μ
$.cookie('userID', null, { domain : '.sudals.com', path: '/'});
μ΅μ
HttpOnly
HttpOnly μ΅μ
μ¬μ©μμ XSS (Cross-Site Scripting) λ₯Ό λ°©μ§νκΈ° μνμ¬ μ¬μ©νλ€.
μ΄ μ΅μ
μ μ€μ νλ©΄ Document.cookie API μ μ κ·Όν μ μμΌλ©° μλ²μ μ μ‘λλ μ©λλ‘λ§ μ¬μ©κ°λ₯νλ€.
μΈμ μΏ ν€ (Session Cookie) λ Javascript μμ μ¬μ©ν νμμ±μ΄ μκΈ° λλ¬Έμ HttpOnly νλκ·Έκ° μ€μ λλκ²μ΄ λ°λμ§νλ€.
β Security