Cookie: Creation, Path, Domain, Secure, and HttpOnly Flags
Cookie: Creation, Path, Domain, Secure, and HttpOnly Flags
Cookie क्या है?
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 होता है।
Cookie Creation (Cookie कैसे बनती है)
जब कोई 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 करते हैं।
Cookie Parameters Explained
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 रहेगी।
Cookie Path (Path क्या होता है)
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 |
Cookie Domain (Domain क्या होता है)
Domain parameter यह specify करता है कि cookie किस domain और उसके subdomains के लिए valid होगी।
- अगर domain explicitly mention नहीं किया गया है, तो cookie केवल उसी domain पर valid होती है जहाँ से यह set की गई है।
- अगर domain दिया गया है जैसे
Domain=.example.com, तो यह cookieexample.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 और HttpOnly Flags साथ में
ज्यादातर secure applications दोनों flags एक साथ use करती हैं ताकि cookie पूरी तरह safe रहे।
Example:
Set-Cookie: loginId=123; Secure; HttpOnly;
इसका मतलब — cookie सिर्फ HTTPS पर जाएगी और JavaScript द्वारा access नहीं की जा सकेगी।
SameSite Attribute (Cross-Site Protection)
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;
Types of Cookies
- Session Cookies: Temporary cookies जो browser बंद होते ही delete हो जाती हैं।
- Persistent Cookies: Specific duration के लिए store रहती हैं (Expires या Max-Age से set होती हैं)।
- Secure Cookies: सिर्फ HTTPS पर transfer होती हैं।
- HttpOnly Cookies: JavaScript से inaccessible रहती हैं।
Cookie कैसे काम करती है?
जब user किसी website पर visit करता है, तो server browser को एक cookie भेजता है। Browser उसे store करता है और हर अगली request में automatically server को वापस भेज देता है।
Example Flow:
- Server → Browser:
Set-Cookie: user=Ravi; - Browser → Server:
Cookie: user=Ravi;
Cookie in Programming (Example in Servlet)
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());
}
}
Cookie के Practical Uses
- Session Management: Login sessions maintain करने के लिए।
- Personalization: User preferences जैसे theme, language store करने के लिए।
- Tracking: Analytics और ad personalization के लिए।
Cookie से जुड़ी Security Issues
- 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 पर भेजी जा सकती है।
Best Practices for Using Cookies
- 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 से बचा जा सके।
Quick Summary (एक नज़र में)
| 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 |
Real-Life Example
मान लीजिए आप किसी 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 रहेगी।
Final Note
Cookies web world का बहुत छोटा लेकिन powerful हिस्सा हैं। इनकी मदद से websites user को seamless experience देती हैं। लेकिन अगर इनका सही तरीके से use न किया जाए, तो security risks बढ़ सकते हैं। इसलिए, हमेशा cookies के साथ proper flags (Secure, HttpOnly, SameSite) use करना जरूरी है ताकि data safe और user trust बना रहे।