Feedback Form

Cookie: Creation, Path, Domain, Secure, and HttpOnly Flags

Cookie: Creation, Path, Domain, Secure, and HttpOnly Flags

Cookie एक छोटा सा text file होता है जो browser में store होता है जब कोई user किसी website को visit करता है। इसका main purpose होता है user की activity, preferences और login details को याद रखना ताकि अगली बार website user को better experience दे सके।

Example के लिए, जब आप किसी e-commerce site पर login करते हैं और बाद में वापस आते हैं तो आपको फिर से login नहीं करना पड़ता — यह cookie की वजह से possible होता है।

जब कोई web server browser को response भेजता है, तो वह “Set-Cookie” header के माध्यम से cookie create करता है। Browser इस cookie को store कर लेता है और हर अगली request में इसे server को भेजता है।

Example:

Set-Cookie: userId=12345; Path=/; Domain=example.com; Secure; HttpOnly

ऊपर दिए गए example में, userId=12345 एक key-value pair है, और बाकी parameters उसके behavior को control करते हैं।

1. Name और Value

हर cookie में एक name और एक value होता है। यह key-value pair data store करता है। जैसे – sessionId=abc123

2. Expires और Max-Age

ये दोनों parameters यह बताते हैं कि cookie कितने समय तक valid रहेगी। अगर expiry time नहीं दिया गया है तो cookie एक session cookie होती है और browser बंद होते ही delete हो जाती है।

  • Expires: Date और time specify करता है कि cookie कब expire होगी।
  • Max-Age: Duration specify करता है (seconds में) कि cookie कितने समय तक valid रहेगी।

Example:

Set-Cookie: token=xyz; Max-Age=3600;

इसका मतलब cookie एक घंटे (3600 सेकंड) तक valid रहेगी।

Path parameter यह बताता है कि cookie किस URL path के लिए valid होगी। अगर path / दिया गया है तो यह पूरी site के लिए valid होगी।

Example:

Set-Cookie: theme=dark; Path=/user;

इसका मतलब यह cookie सिर्फ उन URLs पर भेजी जाएगी जो /user से शुरू होते हैं, जैसे – /user/profile

Path Valid For URLs
/ पूरी website
/shop /shop, /shop/cart, /shop/checkout
/admin /admin/dashboard, /admin/settings

Domain parameter यह specify करता है कि cookie किस domain और उसके subdomains के लिए valid होगी।

  • अगर domain explicitly mention नहीं किया गया है, तो cookie केवल उसी domain पर valid होती है जहाँ से यह set की गई है।
  • अगर domain दिया गया है जैसे Domain=.example.com, तो यह cookie example.com और उसके सभी subdomains जैसे shop.example.com पर भी valid रहेगी।

Example:

Set-Cookie: lang=hi; Domain=.example.com;
Domain Cookie Accessible On
example.com example.com only
.example.com example.com और उसके subdomains

Secure Flag (Secure क्या होता है)

Secure flag यह ensure करता है कि cookie केवल HTTPS connection पर ही भेजी जाएगी। इसका मतलब यह है कि cookie का data encrypted रहेगा और attackers उसे intercept नहीं कर पाएंगे।

Example:

Set-Cookie: sessionToken=abc123; Secure;

अगर यह flag नहीं दिया गया है, तो cookie HTTP और HTTPS दोनों requests पर भेजी जा सकती है, जिससे security risk बढ़ जाता है।

HttpOnly Flag (HttpOnly क्या होता है)

HttpOnly flag का मतलब है कि cookie को client-side scripts (जैसे JavaScript) access नहीं कर सकते। इससे XSS (Cross-Site Scripting) attacks से protection मिलती है।

Example:

Set-Cookie: authToken=xyz; HttpOnly;

अब कोई JavaScript code document.cookie के ज़रिए इस cookie को access नहीं कर पाएगा।

ज्यादातर secure applications दोनों flags एक साथ use करती हैं ताकि cookie पूरी तरह safe रहे।

Example:

Set-Cookie: loginId=123; Secure; HttpOnly;

इसका मतलब — cookie सिर्फ HTTPS पर जाएगी और JavaScript द्वारा access नहीं की जा सकेगी।

SameSite attribute modern browsers में CSRF (Cross-Site Request Forgery) attacks से बचाव के लिए use किया जाता है।

  • SameSite=Lax: Default behavior — cookie सिर्फ top-level navigation के साथ भेजी जाती है।
  • SameSite=Strict: Cookie केवल उसी domain की requests पर भेजी जाती है।
  • SameSite=None: Cross-site requests में भी भेजी जाती है, लेकिन इसके साथ Secure flag जरूरी होता है।

Example:

Set-Cookie: test=value; SameSite=Strict;
  • Session Cookies: Temporary cookies जो browser बंद होते ही delete हो जाती हैं।
  • Persistent Cookies: Specific duration के लिए store रहती हैं (Expires या Max-Age से set होती हैं)।
  • Secure Cookies: सिर्फ HTTPS पर transfer होती हैं।
  • HttpOnly Cookies: JavaScript से inaccessible रहती हैं।

जब user किसी website पर visit करता है, तो server browser को एक cookie भेजता है। Browser उसे store करता है और हर अगली request में automatically server को वापस भेज देता है।

Example Flow:

  • Server → Browser: Set-Cookie: user=Ravi;
  • Browser → Server: Cookie: user=Ravi;

Java Servlet में cookie create और retrieve करना बहुत आसान है। चलिए एक छोटा सा example देखते हैं।

Cookie Create करने का Example:

Cookie ck = new Cookie("username", "Ravi");
ck.setMaxAge(3600); // 1 hour validity
response.addCookie(ck);

Cookie Retrieve करने का Example:

Cookie[] cookies = request.getCookies();
for(Cookie c : cookies){
  if(c.getName().equals("username")){
    out.print("Welcome " + c.getValue());
  }
}
  • Session Management: Login sessions maintain करने के लिए।
  • Personalization: User preferences जैसे theme, language store करने के लिए।
  • Tracking: Analytics और ad personalization के लिए।
  • XSS (Cross-Site Scripting): अगर HttpOnly flag नहीं लगा तो attacker cookies चुरा सकता है।
  • CSRF (Cross-Site Request Forgery): अगर SameSite attribute नहीं लगा तो unauthorized requests हो सकती हैं।
  • Man-in-the-Middle Attack: अगर Secure flag नहीं है तो cookie HTTP पर भेजी जा सकती है।
  • Always use Secure और HttpOnly flags।
  • Cookie में sensitive data (जैसे passwords) कभी store न करें।
  • Short expiry time set करें ताकि session hijacking का risk कम हो।
  • Encryption या Tokenization का use करें।
  • SameSite attribute लगाएँ ताकि cross-site attacks से बचा जा सके।
Attribute Description Purpose
Path Cookie किस URL path पर valid है Scope define करना
Domain Cookie किस domain/subdomain पर valid है Access control
Secure Cookie सिर्फ HTTPS पर भेजी जाएगी Data protection
HttpOnly Cookie को JavaScript access नहीं कर सकता XSS protection
SameSite Cross-site request control करता है CSRF protection

मान लीजिए आप किसी banking site पर login करते हैं। जब आप login करते हैं, server एक cookie set करता है:

Set-Cookie: sessionId=bank123; Path=/; Domain=bank.com; Secure; HttpOnly;

अब यह cookie केवल HTTPS connection पर भेजी जाएगी, JavaScript access नहीं कर सकेगा, और सिर्फ bank.com domain पर valid रहेगी।

Cookies web world का बहुत छोटा लेकिन powerful हिस्सा हैं। इनकी मदद से websites user को seamless experience देती हैं। लेकिन अगर इनका सही तरीके से use न किया जाए, तो security risks बढ़ सकते हैं। इसलिए, हमेशा cookies के साथ proper flags (Secure, HttpOnly, SameSite) use करना जरूरी है ताकि data safe और user trust बना रहे।