django - डीजेंगो-सीएसआरएफ सत्यापन विफल-स्थिर वेबसाइट पर फॉर्म से मेरे डीजेंगो ऐप पर डेटा भेजें




security amazon-s3 (2)

आप गतिशील रूप से एक सीएसआरएफ टोकन जोड़ सकते हैं, जो एजेक्स अनुरोधों के लिए उपयोग की जाने वाली तकनीक है। Https://docs.djangoproject.com/en/1.11/ref/csrf/ से :

/**
 * getCookie gets a cookie called 'name' in the current session
 * @param name name of the cookie to get
 * @returns value of the cookie requested, null if not found
 */
function getCookie(name) {
    var cookieValue = null;
    if (document.cookie && document.cookie !== '') {
        var cookies = document.cookie.split(';');
        for (var i = 0; i < cookies.length; i++) {
            var cookie = jQuery.trim(cookies[i]);
            // Does this cookie string begin with the name we want?
            if (cookie.substring(0, name.length + 1) === (name + '=')) {
                cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                break;
            }
        }
    }
    return cookieValue;
}

var csrftoken = getCookie('csrftoken');

function csrfSafeMethod(method) {
    // these HTTP methods do not require CSRF protection
    return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}

/**
 * When doing posts, deletes, etc. we need to transmit the CSRF cookie for
 * the request to go through properly, so add the cookie to all ajax calls
 * that need the cookie.
 */
$.ajaxSetup({
    beforeSend: function (xhr, settings) {
        if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
            xhr.setRequestHeader("X-CSRFToken", csrftoken);
        }
    }
});

फिर आप 'सबमिट' को अपने फॉर्म पर क्लिक करके फ़ॉर्म डेटा के बाद एक एजेक्स कॉल के माध्यम से पोस्ट कर सकते हैं, उसके बाद अगले पृष्ठ पर रीडायरेक्ट कर सकते हैं।

मेरा सेटअप:

  • लैंडिंग पृष्ठ के रूप में एक स्थिर वेबसाइट एएएस एस 3 (welcome.mydomain.com) के माध्यम से प्रदर्शित की गई।
  • उपडोमेन (ऐप.मैडोमेन.कॉम) के माध्यम से एक डीजेंगो ऐप (अजगर 2.7 के साथ डीजेंगो -8.8) पहुंच योग्य है।

मैं एक संपर्क फ़ॉर्म जोड़ना चाहूंगा जो कि मेरी स्थिर वेबसाइट का हिस्सा है और जो संसाधित किए जाने वाले मेरे डीजेंगो सर्वर पर संपर्क फ़ॉर्म जानकारी भेजता है। मैं अपने डीजेंगो ऐप के लिए एक टेम्पलेट के रूप में संपर्क फ़ॉर्म को नहीं जोड़ना चाहता क्योंकि मैं अलग स्टाइल शीट और संसाधनों का उपयोग कर रहा हूं और उन्हें सर्वर के बीच मिश्रण नहीं करना चाहता। प्रपत्र डेटा प्रसंस्करण दृश्य सिर्फ एक ईमेल में इस डेटा को जोड़ रहा है और इसे आंतरिक ईमेल पते पर भेज रहा है।

मुझे एक 403 सीएसआरएफ सत्यापन असफल त्रुटि मिलती है क्योंकि फॉर्म में सीएसआरएफ टोकन शामिल नहीं है।

अब मैं सीएसआरएफ सत्यापन से अनुरोध प्राप्त करने से छूट प्राप्त कर सकता हूं, लेकिन मुझे यकीन नहीं है कि यह कौन सा सुरक्षा जोखिम है।

मुझे यकीन नहीं है कि मैं सीएसआरएफ हमले और खतरों को नहीं समझ रहा हूँ या अगर मैं इस समस्या को गलत तरीके से देख रहा हूं। मेरी सभी खोजों और डीजेंगो-सीएसआरएफ से जुड़े सभी सवालों के जवाब अब तक मेरी मदद नहीं कर रहे हैं।

यहां मेरे प्रश्न हैं:

  • क्या इस समस्या को हल करने का एक बेहतर तरीका है?
  • क्या मैं किसी सुरक्षा जोखिम को बिना जोड़कर csrf_exempt का उपयोग कर सकता हूं (अतिरिक्त मान्यताओं के कारण)?

मैं इस के माध्यम से जाने के लिए सुझाव देता हूं और इससे पहले कि आप डीजेंगो द्वारा प्रदान किए गए सीएसआरएफ_एफ्फिट डेकोरेटर का इस्तेमाल करते हैं, उससे फॉर्मेट से सीएसआरएफ सत्यापन को छूट दें।

सीएसआरएफ टोकन क्या है? इसका महत्व क्या है और यह कैसे काम करता है?

यद्यपि आजकल बेहतर सुरक्षा उपाय के लिए फॉर्म में यूजर सीएसआरएफ_टोकन के लिए यह अच्छा अभ्यास है।





django-csrf