FlawOpen

flawopen.com/CSRF/SameSite cookies

क्या SameSite=Strict CSRF tokens की जगह लेता है?

संदर्भ पृष्ठ
संक्षिप्त उत्तर

SameSite=Strict दूसरे site से आने वाली cookie-authenticated requests के लिए browser की मजबूत सुरक्षा परत है, लेकिन यह हर CSRF का समाधान नहीं है। अलग origin वाले sibling subdomains भी एक ही site माने जा सकते हैं, और attribute लागू न करने वाले clients को सुरक्षा नहीं मिलती। Threat model के अनुसार CSRF token या request-origin की दूसरी जाँच बनाए रखें।

SameSite वास्तव में क्या करता है

SameSite=Strict cookie cross-site requests के साथ नहीं भेजी जाती, जिसमें दूसरे site से आपके application को form submit कराने वाला सामान्य CSRF तरीका भी शामिल है। इस संदर्भ में browser session cookie अपने-आप नहीं जोड़ता। SameSite origin नहीं, site के आधार पर लागू होता है: sibling subdomain से आई request भी same-site हो सकती है। इसलिए Strict compromised या अविश्वसनीय sibling host से रक्षा नहीं करता। बाहरी link पर क्लिक करके site आने पर भी cookie न भेजे जाने से उपयोगकर्ता unauthenticated रह सकता है।

यह कहाँ पर्याप्त नहीं है

Cookie के अलावा authentication तरीके

यदि application bearer token को स्पष्ट रूप से Authorization header में रखता है, तो SameSite उस header को नियंत्रित नहीं करता। Browser का cookie auto-attachment व्यवहार अलग है। इससे हर ऐसा design सुरक्षित नहीं हो जाता: जाँचें कि कोई अन्य तरीका credentials अपने-आप तो नहीं जोड़ता, और tokens को चोरी तथा दुरुपयोग से बचाएँ।

Explicit Lax और attribute छोड़ना अलग हैं

Explicit SameSite=Lax same-site requests और GET जैसे safe method वाली cross-site top-level navigations में cookie भेजता है; यह cross-site subrequests और unsafe-method navigations में cookie रोकता है। Attribute omit करने पर user agent का default लागू होता है। Chromium में यह default explicit Lax से अलग है: current implementation बिना explicit attribute वाली कुछ cookies को बनने के 2 मिनट तक unsafe top-level cross-site requests में भेज सकता है (Lax-allowing-unsafe)। CSRF सुरक्षा के लिए इस browser-specific compatibility behavior पर भरोसा न करें। अपेक्षित attribute स्पष्ट रूप से सेट करें, supported clients पर परीक्षण करें और safe method से state-changing operations कभी उपलब्ध न कराएँ।

पुराने या असंगत clients इसे लागू नहीं करते

SameSite browser लागू करता है। Attribute को support या honor न करने वाले client को सुरक्षा नहीं मिलती। समर्थित clients की जाँच करें और SameSite को उपयुक्त CSRF token, Origin validation या अन्य प्राथमिक सुरक्षा के साथ defense-in-depth मानें।

अक्सर पूछे जाने वाले प्रश्न

क्या GET requests के लिए CSRF token चाहिए?

Safe methods के लिए अलग मार्गदर्शन देखें। GET जैसे safe method से state बदलने वाली कार्रवाई उपलब्ध न हो; safe methods से server state नहीं बदलना चाहिए।

संदर्भ

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