Django में उत्कृष्ट सुरक्षा सुविधाएँ हैं, लेकिन यह महत्वपूर्ण है कि आप उन्हें समझें, और वे क्या करते हैं, ताकि आपके ऐप्स वास्तव में सुरक्षित हों।

Django वेब अनुप्रयोगों के निर्माण के लिए एक सुरक्षित आधार प्रदान करता है। लेकिन Django की डिफ़ॉल्ट सुरक्षा सुविधाओं पर भरोसा करना पर्याप्त नहीं है। आपके अनुप्रयोगों की सुरक्षा को मजबूत करने के लिए अतिरिक्त उपायों को लागू करना आपके लिए महत्वपूर्ण है।

अतिरिक्त उपायों को लागू करके, आप संभावित कमजोरियों को कम कर सकते हैं, संवेदनशील डेटा की सुरक्षा कर सकते हैं और साइबर खतरों से अपने आवेदन की रक्षा कर सकते हैं। यह आपके उपयोगकर्ताओं की जानकारी की सुरक्षा सुनिश्चित करता है और आपके संगठन की प्रतिष्ठा और विश्वसनीयता बनाए रखने में मदद करता है।

डेकोरेटर्स के साथ सुरक्षित दृश्य

Django में दृश्य आने वाले अनुरोधों को संभालते हैं। ग्राहक को मिलने वाली प्रतिक्रिया को निर्धारित करने में वे महत्वपूर्ण भूमिका निभाते हैं। सुरक्षित दृश्य पहुंच को नियंत्रित करते हैं और संवेदनशील कार्यात्मकताओं की सुरक्षा करते हैं। Django सज्जाकार प्रदान करता है जिसे आप विशिष्ट सुरक्षा उपायों को लागू करने के लिए विचारों पर लागू कर सकते हैं।

instagram viewer

@login_required डेकोरेटर

@लॉगिन आवश्यक डेकोरेटर सुनिश्चित करता है कि केवल प्रमाणित उपयोगकर्ता ही किसी विशेष दृश्य तक पहुंच सकते हैं। जब कोई अप्रमाणित उपयोगकर्ता दृश्य तक पहुँचने का प्रयास करता है, तो एप्लिकेशन उन्हें लॉगिन पृष्ठ पर पुनर्निर्देशित कर देता है।

से django.contrib.auth.decorators आयात लॉगिन आवश्यक
से django.http आयात एचटीटीपी रिस्पांस

@लॉगिन आवश्यक
डीईएफ़safe_view(अनुरोध):
# आपका विचार तर्क यहाँ
वापस करना एचटीपीप्रतिक्रिया("यह एक सुरक्षित दृश्य है")

लागू करना @लॉगिन आवश्यक सिक्योर_व्यू फंक्शन के लिए डेकोरेटर स्वचालित रूप से यह सुनिश्चित करता है कि दृश्य के तर्क को निष्पादित करने से पहले उपयोगकर्ता को प्रमाणित किया गया हो।

कस्टम डेकोरेटर्स

Django आपको कस्टम डेकोरेटर बनाने की अनुमति देता है। यह आपको अतिरिक्त सुरक्षा जांच या प्रतिबंध लागू करने की अनुमति देता है। उदाहरण के लिए, आप एक डेकोरेटर बनाना चाहते हैं जो विशिष्ट उपयोगकर्ता भूमिकाओं तक पहुंच को प्रतिबंधित करता है।

से functools आयात wraps
से django.http आयात एचटीटीपी रिस्पांस

डीईएफ़admin_only(देखें_फंक):
@wraps (view_func)
डीईएफ़आवरण(अनुरोध, * आर्ग, ** क्वार्ग):
अगर request.user.is_superuser:
वापस करना view_func (अनुरोध, * तर्क, ** क्वार्ग)
अन्य:
वापस करना एचटीपीप्रतिक्रिया("पहुंच अस्वीकृत")

वापस करना आवरण

admin_only डेकोरेटर यह जाँचता है कि क्या दृश्य तक पहुँचने वाला उपयोगकर्ता एक सुपर उपयोक्ता है। यदि वे हैं, तो दृश्य कार्य चलता है, अन्यथा यह उपयोगकर्ता की पहुंच से इनकार करता है।

उपयोगकर्ता प्रमाणीकरण और प्राधिकरण

उपयोगकर्ता प्रमाणीकरण और प्राधिकरण Django अनुप्रयोगों को सुरक्षित करने के महत्वपूर्ण घटक हैं। वे सुनिश्चित करते हैं कि सही व्यक्ति एप्लिकेशन की विशिष्ट कार्यात्मकताओं तक पहुंच बना रहा है।

प्रयोक्ता प्रमाणीकरण

उपयोगकर्ता प्रमाणीकरण आपके आवेदन तक पहुँचने वाले व्यक्ति की पहचान की पुष्टि करता है। Django की प्रमाणीकरण प्रणाली इसे संभालने के लिए कार्यक्षमता प्रदान करती है।

से django.contrib.auth आयात प्रमाणित करें, लॉगिन करें
से django.http आयात एचटीटीपी रिस्पांस

डीईएफ़login_view(अनुरोध):
अगर अनुरोध विधि == 'डाक':
उपयोगकर्ता नाम = अनुरोध। डाक['उपयोगकर्ता नाम']
पासवर्ड = अनुरोध। डाक['पासवर्ड']
उपयोगकर्ता = प्रमाणित (अनुरोध, उपयोगकर्ता नाम = उपयोगकर्ता नाम, पासवर्ड = पासवर्ड)

अगर उपयोगकर्ता हैनहींकोई नहीं:
लॉगिन (अनुरोध, उपयोगकर्ता)
वापस करना एचटीपीप्रतिक्रिया("लॉग इन सफल")
अन्य:
वापस करना एचटीपीप्रतिक्रिया("अवैध प्रत्यय पत्र")
अन्य:
# लॉगिन फॉर्म प्रस्तुत करें
वापस करना एचटीपीप्रतिक्रिया("लॉगिन फॉर्म")

login_view फ़ंक्शन लॉगिन प्रक्रिया को संभालता है। जब कोई उपयोगकर्ता अपनी साख जमा करता है, तो प्रमाणीकरण फ़ंक्शन उन्हें सत्यापित करता है। यदि क्रेडेंशियल मान्य हैं, तो लॉगिन फ़ंक्शन उपयोगकर्ता के लिए एक सत्र बनाता है, जिससे उन्हें एप्लिकेशन के प्रतिबंधित क्षेत्रों तक पहुंचने की अनुमति मिलती है। यदि क्रेडेंशियल्स गलत हैं, तो कोड सत्र नहीं बनाता है।

उपयोगकर्ता प्राधिकरण

उपयोगकर्ता प्राधिकरण निर्धारित करता है कि उपयोगकर्ता एप्लिकेशन के भीतर कौन सी क्रियाएं कर सकता है। Django एक लचीली अनुमति प्रणाली प्रदान करता है जो आपको उपयोगकर्ता पहुंच पर नियंत्रण प्रदान करता है।

से django.contrib.auth.decorators आयात अनुमति_आवश्यक
से django.http आयात एचटीटीपी रिस्पांस

@permission_required('polls.can_vote')
डीईएफ़वोट(अनुरोध):
# मतदान तर्क यहाँ
वापस करना एचटीपीप्रतिक्रिया("वोट दर्ज")

उपरोक्त उदाहरण में, @permission_required डेकोरेटर यह सुनिश्चित करता है कि केवल उपयोगकर्ता ही चुनाव.can_vote अनुमति वोट दृश्य तक पहुंच सकती है। यदि कोई उपयोगकर्ता आवश्यक अनुमति के बिना दृश्य तक पहुँचने का प्रयास करता है, तो उसे पहुँच से वंचित कर दिया जाता है।

कस्टम मिडलवेयर लागू करना

मिडिलवेयर वेब सर्वर और व्यू के बीच स्थित है। कस्टम मिडलवेयर को लागू करना अतिरिक्त सुरक्षा जांच जोड़ता है या अनुरोधों और प्रतिक्रियाओं को संशोधित करता है। यह HTTPS को लागू करने जैसे कारणों से हो सकता है।

से django.http आयात HttpResponsePermanentRedirect

कक्षाEnforceHttpsMiddleware:
डीईएफ़__इस में__(स्वयं, get_response):
स्व.get_response = get_response

डीईएफ़__पुकारना__(स्वयं, अनुरोध):
अगरनहीं अनुरोध.is_secure ():
url = request.build_absolute_uri (request.get_full_path ())
Secure_url = url.replace (' http://', ' https://')
वापस करना HttpResponsePermanentRedirect (सुरक्षित_यूआरएल)

वापस करना self.get_response (अनुरोध)

उपरोक्त मिडलवेयर जांचता है कि अनुरोध उपयोग कर रहा है या नहीं सुरक्षित है तरीका। यदि नहीं, तो यह पर रीडायरेक्ट करता है URL का HTTPS संस्करण.

फ़ाइल हैंडलिंग सुरक्षित करना

फ़ाइल प्रबंधन वेब अनुप्रयोगों में एक सामान्य विशेषता है। ठीक से सुरक्षित नहीं होने पर यह सुरक्षा जोखिम पैदा करता है। उपयोगकर्ता द्वारा अपलोड की गई फ़ाइलों को संभालते समय, फ़ाइल सामग्री को मान्य करना महत्वपूर्ण है। यह दुर्भावनापूर्ण अपलोड को रोकता है। आप Django के FileExtensionValidator का उपयोग करके फ़ाइल प्रकारों को मान्य कर सकते हैं।

से django.core.validators आयात फ़ाइल एक्सटेंशन वैलिडेटर
से django.forms आयात फार्म

कक्षाFileUploadForm(रूप। प्रपत्र):
फ़ाइल = फॉर्म. FileField (सत्यापनकर्ता = [FileExtensionValidator (अनुमत_एक्सटेंशन = ['पीडीएफ', 'docx'])])

उपरोक्त कोड ब्लॉक में, FileUploadForm वर्ग का उपयोग करता है फ़ाइल एक्सटेंशन वैलिडेटर केवल PDF और DOCX फ़ाइल अपलोड करने की अनुमति देने के लिए। एप्लिकेशन अपलोड के दौरान किसी भी अन्य फ़ाइल स्वरूपों को अस्वीकार कर देगा। अपने एप्लिकेशन की आवश्यकताओं के अनुसार अनुमत एक्सटेंशन को कस्टमाइज़ करें।

सीएसआरएफ सुरक्षा

आप Django के अंतर्निहित CSRF सुरक्षा का उपयोग करके क्रॉस-साइट अनुरोध जालसाजी (CSRF) हमलों को रोक सकते हैं। आपको अपने टेम्प्लेट में शामिल करना चाहिए सीएसआरएफ टोकन जो सर्वर साइड पर मान्य होगा।

"डाक" क्रिया ="/फार्म जमा करें/">
{% csrf_token %}
प्रपत्र फ़ील्ड्स


जब आप उपयोग करते हैं % सीएसआरएफ_टोकन % टेम्प्लेट टैग, Django CSRF टोकन के साथ एक छिपी हुई इनपुट फ़ील्ड उत्पन्न करता है। यह टोकन प्रत्येक उपयोगकर्ता सत्र के लिए अद्वितीय है। यह सबमिट किए गए फॉर्म की प्रामाणिकता को सत्यापित करने में मदद करता है।

फॉर्म सबमिशन को संसाधित करते समय सर्वर पक्ष सीएसआरएफ टोकन की जांच करता है। यदि टोकन गुम या अमान्य है, तो Django एक निषिद्ध (HTTP 403) त्रुटि उठाता है। यह सुनिश्चित करना आवश्यक है कि आपका एप्लिकेशन इस प्रकार की सुरक्षा भेद्यता से सुरक्षित है।

सुरक्षित प्रपत्र लेखन

प्रपत्र बनाते समय, उपयोगकर्ता इनपुट को सुरक्षित रूप से संभालना महत्वपूर्ण है। यह SQL इंजेक्शन और XSS हमलों जैसी सामान्य कमजोरियों को रोकने के लिए है। नीचे एक उदाहरण दिया गया है जो दिखाता है कि आप Django में एक सुरक्षित फ़ॉर्म कैसे बना सकते हैं।

से django आयात फार्म
से django.utils.html आयात पलायन

कक्षासिक्योरफॉर्म(रूप। प्रपत्र):
नाम = रूप। चारफिल्ड (अधिकतम_लम्बाई =100)
ईमेल = फॉर्म। ईमेलफ़ील्ड ()

डीईएफ़clean_name(खुद):
नाम = स्व.स्वच्छ_डेटा ['नाम']

# यूजर इनपुट को सैनिटाइज करें
sanitised_name = पलायन (नाम)
वापस करना sanitized_name

डीईएफ़clean_email(खुद):
ईमेल = स्व.स्वच्छ_डेटा ['ईमेल']

# उपयोगकर्ता इनपुट को मान्य और स्वच्छ करें
अगरनहीं ईमेल.endswith('@example.com'):
उठाना रूपों। मान्यता त्रुटि("अमान्य ईमेल डोमेन")

sanitised_email = पलायन (ईमेल)
वापस करना sanitized_email

clean_name और clean_email विधियाँ उपयोगकर्ता इनपुट को मान्य और स्वच्छ करती हैं। clean_name पद्धति का उपयोग करता है पलायन नाम इनपुट को साफ करने और रोकने के लिए कार्य करें संभावित XSS हमले.

clean_email विधि ईमेल प्रारूप को मान्य करती है और ईमेल डोमेन को प्रतिबंधित करती है example.com. यह एक उठाता है मान्यता त्रुटि यदि ईमेल निर्दिष्ट मानदंडों को पूरा नहीं करता है। यह क्रिया आपके प्रपत्रों की सुरक्षा को बढ़ाती है और उन्हें सामान्य भेद्यताओं से बचाती है।

वेब अनुप्रयोग कमजोरियों को समझना महत्वपूर्ण है

वेब एप्लिकेशन कमजोरियों को समझने से आपको अपने एप्लिकेशन को सुरक्षित करने में मदद मिलेगी। यह एप्लिकेशन में संभावित कमजोर बिंदुओं की पहचान करने और उन्हें दूर करने में आपकी सहायता करके ऐसा करेगा। यह बदले में सफल हमलों की संभावना को काफी कम कर देगा।