FlawOpen

flawopen.com/संदर्भ/JWT बनाम HttpOnly कुकीज़

localStorage में JWT बनाम HttpOnly कुकीज़: कौन ज़्यादा सुरक्षित?

प्रमाणीकरण गाइड
संक्षिप्त उत्तर

कई वेब ऐप्लिकेशन के लिए, सर्वर द्वारा प्रबंधित सत्र को HttpOnly कुकी से भेजना एक अच्छा शुरुआती विकल्प है। JavaScript उस कुकी को पढ़ नहीं सकता, इसलिए टोकन निकालना कठिन होता है; लेकिन इससे XSS निष्प्रभावी नहीं होता। उसी origin में चलने वाला इंजेक्ट किया गया कोड प्रमाणित अनुरोध भेज सकता है और पेज के लिए उपलब्ध डेटा पढ़ सकता है।

सुरक्षा के समझौते

संग्रहण / भेजनाXSS जोखिमCSRF व्यवहारनिरस्तीकरण
localStorage bearer tokenउसी origin का JavaScript इसे पढ़ सकता है; XSS इसे चुरा सकता है या उपयोगकर्ता की तरह कार्रवाई कर सकता है।cross-site अनुरोध में अपने-आप नहीं जुड़ता; XSS और client-side CSRF का जोखिम बना रहता है।revocation न जाँची जाए तो self-contained JWT समाप्ति तक मान्य रह सकता है।
HttpOnly cookieJavaScript कुकी मान नहीं पढ़ सकता; XSS फिर भी प्रमाणित अनुरोध भेज सकता है।कुकी नियमों के अनुसार अपने-आप भेजा जाता है; SameSite CSRF की केवल एक परत है।अपारदर्शी सत्र सर्वर पर अमान्य हो सकता है; JWT कुकी के लिए अलग revocation नीति चाहिए।

अनुशंसित संरचना

टोकन प्रारूप, संग्रहण और सत्र स्थिति को अलग समझें

JWT टोकन का प्रारूप है; localStorage और कुकी ब्राउज़र में संग्रहण और भेजने के तरीके हैं। JWT इनमें से किसी में रखा जा सकता है। कुकी में रखा अपारदर्शी सत्र पहचानकर्ता आम तौर पर सर्वर पर रखी सत्र स्थिति दर्शाता है। “JWT या कुकी” समान विकल्पों के बीच सीधी तुलना नहीं है।

हर विकल्प से क्या बदलता है

ब्राउज़र localStorage के मानों को cross-site अनुरोधों में अपने-आप नहीं जोड़ता, लेकिन उसी origin का XSS bearer टोकन पढ़ सकता है या ऐप के माध्यम से कार्रवाई कर सकता है। कुकी ब्राउज़र नियमों के अनुसार अपने-आप भेजी जाती है। HttpOnly मान को JavaScript से छिपाता है, पर इंजेक्ट किए गए कोड को लॉग-इन पेज इस्तेमाल करने से नहीं रोकता। SameSite=Lax CSRF सुरक्षा की एक परत है, पूरी गारंटी नहीं: सुरक्षित विधि वाली top-level navigation और same-site अनुरोध भी मायने रखते हैं। GET से स्थिति न बदलें; सत्यापित token और/या Origin जाँच जैसी उपयुक्त CSRF सुरक्षा लगाएँ।

निरस्तीकरण सर्वर स्थिति और टोकन सत्यापन पर निर्भर है, संग्रहण स्थान पर नहीं। सर्वर सत्र का रिकॉर्ड हटाकर उसे अमान्य किया जा सकता है। revocation जाँची न जाए तो self-contained JWT समाप्ति तक मान्य रह सकता है; छोटी अवधि इस समय को घटाती है, समाप्त नहीं करती।

व्यावहारिक शुरुआती व्यवस्था

स्रोत और आगे पढ़ें

यह भी देखें क्रॉस-साइट रिक्वेस्ट फ़ॉर्जरी (CSRF, CWE-352): यह कैसे काम करता है और इससे कैसे बचें — flawopen.com Next.js Server Actions CSRF: Origin और सुरक्षित कॉन्फ़िगरेशन क्या SameSite=Strict CSRF tokens की जगह लेता है? GET के लिए CSRF token कब चाहिए?