कुकीज़ पर अभी शुरुआत होने के नाते, CSRF और Django (1.4 का प्रयोग करके), मैं क्या बाहर कर सकते हैं से यह कैसे काम करता है, मुझे सही करें जहाँ मैं गलत हो ...क्या यह Django की सीएसआरएफ सुरक्षा कैसे काम करता है?
निम्नलिखित जहां django.middleware लागू होता है। csrf.CsrfViewMiddleware MIDDLEWARE_CLASSES tuple में शामिल है।
जहां एक पोस्ट फॉर्म में csrf_token
टैग शामिल है, और संबंधित दृश्य RequestContext
टेम्पलेट में पास करता है, पृष्ठ का अनुरोध करने का मतलब है कि Django में एक छिपी हुई फ़ील्ड फ़ील्ड शामिल है जिसमें अल्फान्यूमेरिक स्ट्रिंग है। Django ब्राउज़र पर एक कुकी को नाम के साथ csrftoken
पर सेट करता है और वैल्यू उसी अल्फान्यूमेरिक स्ट्रिंग पर सेट होता है।
फॉर्म सबमिशन प्राप्त करते समय, Django जांचता है कि छिपे हुए फॉर्म फ़ील्ड मैचों और ब्राउज़र से प्राप्त csrftoken कुकी से अल्फान्यूमेरिक स्ट्रिंग मान। यदि वे 403 प्रतिक्रिया से मेल नहीं खाते हैं तो जारी किया जाता है।
एक सीएसआरएफ हमला एक दुर्भावनापूर्ण वेबसाइट के रूप में आ सकता है जिसमें एक आईफ्रेम शामिल है। आईफ्रेम में एक पोस्ट फॉर्म और कुछ जावास्क्रिप्ट शामिल है। मेरे Django साइट पर फॉर्म action
विशेषता बिंदु। फ़ॉर्म को मेरी साइट पर कुछ गंदा करने के लिए डिज़ाइन किया गया है, और जेएस आईफ़्रेम लोड होने पर फ़ॉर्म सबमिट करता है।
ब्राउज़र में फॉर्म सबमिशन के शीर्षलेख में csrftoken
कुकी शामिल होगी। हालांकि, फॉर्म में छिपे हुए फ़ील्ड को मिलान करने वाले अल्फान्यूमेरिक स्ट्रिंग के साथ शामिल नहीं किया जाएगा, इसलिए 403 वापस आ गया है और हमला विफल हो जाता है। अगर आईफ्रेम जेएस ने कुकी तक पहुंचने का प्रयास किया है, ताकि सही हिडनडे फॉर्म फ़ील्ड बनाने के लिए, ब्राउजर इसे ऐसा करने से रोक देगा।
क्या यह सही है?
मुझे कुछ भी गलत नहीं दिख रहा है। शायद दूसरों को, लेकिन सामान्य रूप से, आप इसे मिला। – Zashas