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 रह सकता है।
यह कहाँ पर्याप्त नहीं है
यदि application bearer token को स्पष्ट रूप से Authorization header में रखता है, तो SameSite उस header को नियंत्रित नहीं करता। Browser का cookie auto-attachment व्यवहार अलग है। इससे हर ऐसा design सुरक्षित नहीं हो जाता: जाँचें कि कोई अन्य तरीका credentials अपने-आप तो नहीं जोड़ता, और tokens को चोरी तथा दुरुपयोग से बचाएँ।
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 कभी उपलब्ध न कराएँ।
SameSite browser लागू करता है। Attribute को support या honor न करने वाले client को सुरक्षा नहीं मिलती। समर्थित clients की जाँच करें और SameSite को उपयुक्त CSRF token, Origin validation या अन्य प्राथमिक सुरक्षा के साथ defense-in-depth मानें।
अक्सर पूछे जाने वाले प्रश्न
Safe methods के लिए अलग मार्गदर्शन देखें। GET जैसे safe method से state बदलने वाली कार्रवाई उपलब्ध न हो; safe methods से server state नहीं बदलना चाहिए।