समान-साइट अनुरोध डिज़ाइन, सर्वर-मान्य टोकन या हेडर, ओरिजिन जांच, सुरक्षित विधियाँ, और लॉगिन तथा क्रॉस-ओरिजिन एज केस के लिए परीक्षण का उपयोग करके ब्राउज़र-प्रमाणित स्थिति परिवर्तनों के लिए CSRF सुरक्षा को परिभाषित करता है।
पैकेज स्थिति: संदर्भ संदर्भ मानव समीक्षा के लिए तैयार। अनुबंध और परीक्षण परिदृश्य पूर्ण हैं, लेकिन यह दावा नहीं किया गया है कि कोई अपनाने वाला कार्यान्वयन इन्हें पार कर चुका है।
निर्णय
कुकी-प्रमाणित ब्राउज़र म्यूटेशन के लिए, एक सर्वर-सत्यापित एंटी-CSRF संकेत आवश्यक है जिसे एक हमलावर क्रॉस-साइट सबमिट नहीं कर सकता। रक्षा की गहराई के रूप में SameSite कुकीज़ और Origin जांच का उपयोग करें, न कि केवल एक सार्वभौमिक नियंत्रण के रूप में।
दायरा
- संरक्षित अनुरोध वर्ग, कुकी विशेषताएँ, टोकन/हेडर पैटर्न, ओरिजिन सत्यापन, CORS, लॉगिन CSRF, API अपवाद, रोटेशन, और परीक्षण।
- ब्राउज़र अनुरोध जहाँ परिवेशीय प्रमाण-पत्र उपयोगकर्ता को प्रमाणित करते हैं।
- फ्रेमवर्क और प्रॉक्सी कॉन्फ़िगरेशन साक्ष्य।
इस ब्लॉक के बाहर
- क्रॉस-साइट स्क्रिप्टिंग रोकथाम; XSS कई CSRF नियंत्रणों को विफल कर सकता है और इसके लिए अलग सुरक्षा आवश्यक है।
- गैर-ब्राउज़र बीयरर-टोकन क्लाइंट्स में CSRF टोकन जोड़ना जो परिवेशीय प्रमाण-पत्र का उपयोग नहीं करते।
अनुबंध
- सुरक्षित विधियाँ स्थिति नहीं बदलतीं; हर कुकी-प्रमाणित असुरक्षित विधि चयनित टोकन/हेडर नियंत्रण का उपयोग करती है।
- टोकन सत्र से बंधा होता है या क्रिप्टोग्राफिक रूप से उससे जुड़ा होता है, सर्वर-साइड सत्यापित, अप्रत्याशित, और लॉग तथा URL से अनुपस्थित होता है।
- Origin या Referer सत्यापन एक सख्त कॉन्फ़िगर किए गए लक्ष्य ओरिजिन और विश्वसनीय प्रॉक्सी पुनर्निर्माण का उपयोग करता है।
- सत्र कुकीज़ जहाँ उपयुक्त हों Secure, HttpOnly का उपयोग करती हैं, और वास्तविक साइन-इन प्रवाहों के अनुकूल एक स्पष्ट SameSite नीति होती है।
- CORS कभी भी क्रेडेंशियल वाले अनुरोधों के साथ मनमाने ओरिजिन को संयोजित नहीं करता, और कस्टम-हेडर API केवल विश्वसनीय ओरिजिन की अनुमति देते हैं।
- लॉगिन, लॉगआउट, अपलोड, GraphQL, विधि अधिलेखन, और सामग्री-प्रकार विविधताएँ एंडपॉइंट सूची और परीक्षणों में शामिल हैं।
कार्यान्वयन मार्गदर्शन
- कस्टम क्रिप्टोग्राफी के बजाय फ्रेमवर्क-रक्षित सिंक्रोनाइज़र टोकन या साइन किए गए डबल-सबमिट कार्यान्वयन को प्राथमिकता दें।
- JSON म्यूटेशन एंडपॉइंट्स के लिए सरल क्रॉस-साइट सामग्री प्रकारों को अस्वीकार करें और एक कस्टम हेडर आवश्यक करें।
- CI में रूट मेटाडेटा से म्यूटेशन की सूची बनाएं ताकि असुरक्षित जोड़ का पता चल सके।
- प्रमाणीकरण परिवर्तनों पर सत्र-संबंधित टोकन को घुमाएं, जबकि कई टैब को जानबूझकर संभालें।
विफलता प्रबंधन और सुरक्षा उपाय
- अनुपस्थित या अमान्य संकेत म्यूटेशन को सामान्य प्रतिक्रिया के साथ अस्वीकार कर देते हैं और सीमित दर वाली सुरक्षा टेलीमेट्री जारी करते हैं।
- यदि Origin अनुपस्थित है, तो स्पष्ट फॉलबैक नीति लागू करें; कभी भी मनमाने Referer उपस्ट्रिंग को मेल के रूप में न मानें।
- यदि एक संघीकृत साइन-इन कॉलबैक को क्रॉस-साइट कुकीज़ की आवश्यकता है, तो इसे राज्य/नॉन्स के साथ अलग करें और सत्यापित करें, बजाय हर एंडपॉइंट को कमजोर करने के।
सत्यापन और संचालन
- एंडपॉइंट/कारण, अनुपस्थित Origin, टोकन असंगति, और गलत-सकारात्मक समर्थन मामलों द्वारा CSRF अस्वीकृतियों को मापें बिना टोकन लॉग किए।
- उत्पादन-समान कुकी, प्रॉक्सी, और CORS सेटिंग्स के खिलाफ क्रॉस-ओरिजिन ब्राउज़र परीक्षण चलाएं।
- जब भी प्रमाणीकरण ट्रांसपोर्ट बदलता है, रूट सूची की समीक्षा करें।
इस पैकेज में निष्पादन-समान उदाहरण फिक्स्चर और स्वीकृति अनुबंध हैं। पैकेज संरचना और मेटाडेटा जांचने के लिए संग्रह रूट से python tools/validate.py चलाएं; फिर लक्षित रिपॉजिटरी में परिदृश्यों को लागू और निष्पादित करें।
अपनाने की धारणाएँ
example.yamlमें नाम और संख्यात्मक मान एक अपनाने वाली प्रोफ़ाइल हैं, सार्वभौमिक डिफ़ॉल्ट नहीं।- अपनाने वाली टीम को अपने सिस्टम के लिए अभिनेताओं, डेटा वर्गों, त्रुटि शब्दावली, और स्वामित्व को मैप करना होगा।