जैसे URL पर निर्देशित किया जाता है, तो document.write() सीधे दुर्भावनापूर्ण स्क्रिप्ट को प्रस्तुत करेगा पृष्ठ।

XSS को कैसे रोकें:

  const userInput = sanitizeHtml(getUserInput());

इनपुट को स्वच्छ करने के लिए DOMPurify जैसी लाइब्रेरी का उपयोग करें।

सीएसपी हेडर का उदाहरण:

  Content-Security-Policy: default-src \\'self\\'; script-src \\'self\\' https://trusted.com

2. क्रॉस-साइट अनुरोध जालसाजी (सीएसआरएफ)

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

संवेदनशील फॉर्म का उदाहरण:

यदि फॉर्म असुरक्षित है, तो एक हमलावर लॉग-इन उपयोगकर्ता की ओर से अनुरोध सबमिट करने के लिए किसी अन्य साइट पर एक नकली फॉर्म बना सकता है।

सीएसआरएफ को कैसे रोकें:

  
  Set-Cookie: sessionId=abc123; SameSite=Strict

3. असुरक्षित अक्रमांकन

असुरक्षित डिसेरिएलाइज़ेशन तब होता है जब एप्लिकेशन में ऑब्जेक्ट बनाने के लिए अविश्वसनीय डेटा का उपयोग किया जाता है, जिससे हमलावरों को मनमाना कोड निष्पादित करने या विशेषाधिकार बढ़ाने की अनुमति मिलती है।

असुरक्षित कोड का उदाहरण:

const user = JSON.parse(dataFromUser);

यदि डेटाफ्रॉमयूजर के साथ छेड़छाड़ की जाती है, तो डीसेरिएलाइजेशन प्रक्रिया के परिणामस्वरूप अनपेक्षित वस्तुओं का निर्माण या खतरनाक तरीकों का निष्पादन हो सकता है।

असुरक्षित अक्रमांकन को कैसे रोकें:

4. सर्वर-साइड जावास्क्रिप्ट इंजेक्शन

कुछ मामलों में, सर्वर-साइड जावास्क्रिप्ट निष्पादन की आवश्यकता होती है, जैसे कि Node.js वातावरण में। सर्वर-साइड जावास्क्रिप्ट इंजेक्शन तब होता है जब अविश्वसनीय डेटा को सर्वर पर कोड के रूप में निष्पादित किया जाता है, जिससे कोड निष्पादन कमजोरियां पैदा होती हैं।

असुरक्षित कोड का उदाहरण:

eval(userInput);

यदि कोई हमलावर यूजरइनपुट को नियंत्रित करता है, तो वे सर्वर पर दुर्भावनापूर्ण कोड इंजेक्ट और निष्पादित कर सकते हैं।

सर्वर-साइड जावास्क्रिप्ट इंजेक्शन को कैसे रोकें:

  const safeFunction = new Function(\\'return 2   2\\');

5. टूटा हुआ प्रमाणीकरण

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

सामान्य कमजोरियाँ:

प्रमाणीकरण को कैसे मजबूत करें:

  res.cookie(\\'sessionId\\', sessionId, { httpOnly: true, secure: true });

6. संवेदनशील डेटा एक्सपोज़र

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

डेटा एक्सपोज़र को कैसे रोकें:

  export API_KEY=your_api_key

7. अमान्य रीडायरेक्ट और फ़ॉर्वर्ड

यह भेद्यता तब होती है जब कोई हमलावर उपयोगकर्ताओं को किसी दुर्भावनापूर्ण साइट पर पुनर्निर्देशित करने के लिए URL में हेरफेर करता है।

असुरक्षित कोड का उदाहरण:

res.redirect(req.query.redirectUrl);

यदि यूआरएल मान्य नहीं है, तो एक हमलावर उपयोगकर्ताओं को फ़िशिंग साइट पर भेज सकता है।

अमान्य रीडायरेक्ट को कैसे रोकें:


जावास्क्रिप्ट अनुप्रयोगों को सुरक्षित करने के लिए सर्वोत्तम अभ्यास

  1. नियमित सुरक्षा ऑडिट और प्रवेश परीक्षण: नियमित रूप से ऑडिट और प्रवेश परीक्षण आयोजित करके कमजोरियों के लिए अपने आवेदन का परीक्षण करें।

  2. अपडेट निर्भरताएं: लाइब्रेरी, फ्रेमवर्क और पैकेज को अपडेट रखें। अपने प्रोजेक्ट निर्भरता में कमजोरियों की जांच के लिए एनपीएम ऑडिट जैसे टूल का उपयोग करें।

  3. न्यूनतम विशेषाधिकार के सिद्धांत का पालन करें: अपने एप्लिकेशन के भीतर घटकों और उपयोगकर्ताओं के पास मौजूद अनुमतियों और पहुंच को सीमित करें।

  4. सुरक्षा हेडर: सुरक्षा में सुधार के लिए HTTP सुरक्षा हेडर जैसे एक्स-कंटेंट-टाइप-ऑप्शंस, एक्स-फ्रेम-ऑप्शंस और स्ट्रिक्ट-ट्रांसपोर्ट-सिक्योरिटी का उपयोग करें।

सुरक्षा शीर्षलेखों का उदाहरण:

X-Frame-Options: DENYStrict-Transport-Security: max-age=63072000; includeSubDomains; preload
  1. इनपुट सत्यापन: हमेशा क्लाइंट और सर्वर दोनों पक्षों पर उपयोगकर्ता इनपुट को मान्य करें। लंबाई, प्रकार, प्रारूप और अनुमत वर्णों के लिए इनपुट को मान्य किया जाना चाहिए।

निष्कर्ष

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

आगे पढ़ने के लिए, डेवलपर्स को OWASP की शीर्ष दस कमजोरियों पर नजर रखनी चाहिए और इन जानकारियों को अपनी विकास प्रथाओं में शामिल करना चाहिए।

","image":"http://www.luping.net/uploads/20240916/172648836966e81f3179798.jpg","datePublished":"2024-11-07T21:09:09+08:00","dateModified":"2024-11-07T21:09:09+08:00","author":{"@type":"Person","name":"luping.net","url":"https://www.luping.net/articlelist/0_1.html"}}
"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > जावास्क्रिप्ट अनुप्रयोगों को सुरक्षित करना: सामान्य कमजोरियाँ और उनसे कैसे बचें

जावास्क्रिप्ट अनुप्रयोगों को सुरक्षित करना: सामान्य कमजोरियाँ और उनसे कैसे बचें

2024-11-07 को प्रकाशित
ब्राउज़ करें:325

Securing JavaScript Applications: Common Vulnerabilities and How to Avoid Them

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

सामान्य जावास्क्रिप्ट कमजोरियाँ

1. क्रॉस-साइट स्क्रिप्टिंग (XSS)

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

असुरक्षित कोड का उदाहरण:

document.write(location.search);

यदि किसी उपयोगकर्ता को https://example.com/?name= जैसे URL पर निर्देशित किया जाता है, तो document.write() सीधे दुर्भावनापूर्ण स्क्रिप्ट को प्रस्तुत करेगा पृष्ठ।

XSS को कैसे रोकें:

  • इनपुट को सैनिटाइज़ करें: उपयोगकर्ता इनपुट को हमेशा मान्य और सैनिटाइज़ करें।
  const userInput = sanitizeHtml(getUserInput());

इनपुट को स्वच्छ करने के लिए DOMPurify जैसी लाइब्रेरी का उपयोग करें।

  • सामग्री सुरक्षा नीति (सीएसपी) का उपयोग करें: एक सीएसपी हेडर उन स्क्रिप्ट के निष्पादन को रोक सकता है जो विश्वसनीय स्रोतों से नहीं हैं।

सीएसपी हेडर का उदाहरण:

  Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted.com

2. क्रॉस-साइट अनुरोध जालसाजी (सीएसआरएफ)

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

संवेदनशील फॉर्म का उदाहरण:

यदि फॉर्म असुरक्षित है, तो एक हमलावर लॉग-इन उपयोगकर्ता की ओर से अनुरोध सबमिट करने के लिए किसी अन्य साइट पर एक नकली फॉर्म बना सकता है।

सीएसआरएफ को कैसे रोकें:

  • एंटी-सीएसआरएफ टोकन का उपयोग करें: प्रत्येक सत्र या फॉर्म सबमिशन के लिए अद्वितीय टोकन जेनरेट करें और उन्हें सर्वर साइड पर मान्य करें।
  
  • सेमसाइट कुकीज़: सेमसाइट विशेषता के साथ कुकीज़ सेट करें, जो कुकी के साथ क्रॉस-ऑरिजिन अनुरोधों को प्रतिबंधित करता है।
  Set-Cookie: sessionId=abc123; SameSite=Strict

3. असुरक्षित अक्रमांकन

असुरक्षित डिसेरिएलाइज़ेशन तब होता है जब एप्लिकेशन में ऑब्जेक्ट बनाने के लिए अविश्वसनीय डेटा का उपयोग किया जाता है, जिससे हमलावरों को मनमाना कोड निष्पादित करने या विशेषाधिकार बढ़ाने की अनुमति मिलती है।

असुरक्षित कोड का उदाहरण:

const user = JSON.parse(dataFromUser);

यदि डेटाफ्रॉमयूजर के साथ छेड़छाड़ की जाती है, तो डीसेरिएलाइजेशन प्रक्रिया के परिणामस्वरूप अनपेक्षित वस्तुओं का निर्माण या खतरनाक तरीकों का निष्पादन हो सकता है।

असुरक्षित अक्रमांकन को कैसे रोकें:

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

4. सर्वर-साइड जावास्क्रिप्ट इंजेक्शन

कुछ मामलों में, सर्वर-साइड जावास्क्रिप्ट निष्पादन की आवश्यकता होती है, जैसे कि Node.js वातावरण में। सर्वर-साइड जावास्क्रिप्ट इंजेक्शन तब होता है जब अविश्वसनीय डेटा को सर्वर पर कोड के रूप में निष्पादित किया जाता है, जिससे कोड निष्पादन कमजोरियां पैदा होती हैं।

असुरक्षित कोड का उदाहरण:

eval(userInput);

यदि कोई हमलावर यूजरइनपुट को नियंत्रित करता है, तो वे सर्वर पर दुर्भावनापूर्ण कोड इंजेक्ट और निष्पादित कर सकते हैं।

सर्वर-साइड जावास्क्रिप्ट इंजेक्शन को कैसे रोकें:

  • eval() से बचें: उपयोगकर्ता द्वारा प्रदत्त इनपुट को निष्पादित करने के लिए eval() का उपयोग न करें।
  const safeFunction = new Function('return 2   2');
  • स्टेटिक कोड विश्लेषण टूल का उपयोग करें: ESLint जैसे टूल संभावित कोड इंजेक्शन बिंदुओं की पहचान करने में मदद कर सकते हैं।

5. टूटा हुआ प्रमाणीकरण

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

सामान्य कमजोरियाँ:

  • कमजोर पासवर्ड: उपयोगकर्ता ऐसे पासवर्ड चुन सकते हैं जिनका आसानी से अनुमान लगाया जा सकता है या जिनके साथ छेड़छाड़ की जा सकती है।
  • सत्र अपहरण: हमलावर सत्र टोकन या कुकीज़ चुरा सकते हैं।

प्रमाणीकरण को कैसे मजबूत करें:

  • मल्टी-फैक्टर ऑथेंटिकेशन (एमएफए) का उपयोग करें: उपयोगकर्ताओं को कई तरीकों (जैसे, पासवर्ड एसएमएस कोड) का उपयोग करके अपनी पहचान सत्यापित करने की आवश्यकता होती है।

  • सुरक्षित सत्र प्रबंधन: सुरक्षित, केवल HTTP और एन्क्रिप्टेड कुकीज़ का उपयोग करें। सत्र निर्धारण हमलों को रोकने के लिए लॉगिन के बाद सत्र टोकन पुन: उत्पन्न करें।

  res.cookie('sessionId', sessionId, { httpOnly: true, secure: true });

6. संवेदनशील डेटा एक्सपोज़र

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

डेटा एक्सपोज़र को कैसे रोकें:

  • संवेदनशील डेटा एन्क्रिप्ट करें: संवेदनशील जानकारी को संग्रहीत और प्रसारित करने के लिए हमेशा मजबूत एन्क्रिप्शन एल्गोरिदम (जैसे, एईएस-256) का उपयोग करें।
  • HTTPS का उपयोग करें: सुनिश्चित करें कि सर्वर और क्लाइंट के बीच सभी संचार TLS (HTTPS) का उपयोग करके एन्क्रिप्ट किया गया है।

  • रहस्यों के लिए पर्यावरण चर: एपीआई कुंजी, डेटाबेस क्रेडेंशियल और अन्य रहस्यों को अपने एप्लिकेशन में हार्ड-कोड करने के बजाय पर्यावरण चर या सुरक्षित वॉल्ट में संग्रहीत करें।

  export API_KEY=your_api_key

7. अमान्य रीडायरेक्ट और फ़ॉर्वर्ड

यह भेद्यता तब होती है जब कोई हमलावर उपयोगकर्ताओं को किसी दुर्भावनापूर्ण साइट पर पुनर्निर्देशित करने के लिए URL में हेरफेर करता है।

असुरक्षित कोड का उदाहरण:

res.redirect(req.query.redirectUrl);

यदि यूआरएल मान्य नहीं है, तो एक हमलावर उपयोगकर्ताओं को फ़िशिंग साइट पर भेज सकता है।

अमान्य रीडायरेक्ट को कैसे रोकें:

  • श्वेतसूची यूआरएल: केवल विश्वसनीय, पूर्वनिर्धारित यूआरएल पर रीडायरेक्ट की अनुमति देते हैं।

  • सुरक्षित रीडायरेक्ट विधियों का उपयोग करें: उपयोगकर्ताओं को रीडायरेक्ट करने से पहले सुनिश्चित करें कि रीडायरेक्ट तर्क जांचता है कि यूआरएल सुरक्षित है या नहीं।


जावास्क्रिप्ट अनुप्रयोगों को सुरक्षित करने के लिए सर्वोत्तम अभ्यास

  1. नियमित सुरक्षा ऑडिट और प्रवेश परीक्षण: नियमित रूप से ऑडिट और प्रवेश परीक्षण आयोजित करके कमजोरियों के लिए अपने आवेदन का परीक्षण करें।

  2. अपडेट निर्भरताएं: लाइब्रेरी, फ्रेमवर्क और पैकेज को अपडेट रखें। अपने प्रोजेक्ट निर्भरता में कमजोरियों की जांच के लिए एनपीएम ऑडिट जैसे टूल का उपयोग करें।

  3. न्यूनतम विशेषाधिकार के सिद्धांत का पालन करें: अपने एप्लिकेशन के भीतर घटकों और उपयोगकर्ताओं के पास मौजूद अनुमतियों और पहुंच को सीमित करें।

  4. सुरक्षा हेडर: सुरक्षा में सुधार के लिए HTTP सुरक्षा हेडर जैसे एक्स-कंटेंट-टाइप-ऑप्शंस, एक्स-फ्रेम-ऑप्शंस और स्ट्रिक्ट-ट्रांसपोर्ट-सिक्योरिटी का उपयोग करें।

सुरक्षा शीर्षलेखों का उदाहरण:

X-Frame-Options: DENY
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
  1. इनपुट सत्यापन: हमेशा क्लाइंट और सर्वर दोनों पक्षों पर उपयोगकर्ता इनपुट को मान्य करें। लंबाई, प्रकार, प्रारूप और अनुमत वर्णों के लिए इनपुट को मान्य किया जाना चाहिए।

निष्कर्ष

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

आगे पढ़ने के लिए, डेवलपर्स को OWASP की शीर्ष दस कमजोरियों पर नजर रखनी चाहिए और इन जानकारियों को अपनी विकास प्रथाओं में शामिल करना चाहिए।

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/manjushsh/securing-javascript-applications-common-volnerability-and-how-to-avoid-them-4cn3?1 यदि कोई उल्लंघन है, तो कृपया स्टडी_गोलंग@163 से संपर्क करें इसे हटाने के लिए .com
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3