परिचय:
जावास्क्रिप्ट इंजेक्शन हमले वेब अनुप्रयोगों के लिए एक महत्वपूर्ण सुरक्षा खतरा हैं। इन हमलों से डेटा उल्लंघन, अनधिकृत कार्रवाइयां और कई अन्य सुरक्षा समस्याएं हो सकती हैं। मैं जावास्क्रिप्ट इंजेक्शन हमलों का पता लगाने और उन्हें रोकने के लिए उन्नत तकनीकों के बारे में आपका मार्गदर्शन करूंगा। इन तकनीकों को प्रभावी ढंग से समझने और लागू करने में आपकी सहायता के लिए इस ब्लॉग में वास्तविक दुनिया का उदाहरण कोड शामिल होगा।
जावास्क्रिप्ट इंजेक्शन क्या है?
जावास्क्रिप्ट इंजेक्शन तब होता है जब कोई हमलावर किसी वेब एप्लिकेशन में दुर्भावनापूर्ण कोड इंजेक्ट करने में सक्षम होता है। यह विभिन्न माध्यमों से हो सकता है, जैसे इनपुट फ़ील्ड, यूआरएल पैरामीटर या कुकीज़ भी। एक बार इंजेक्ट होने के बाद, दुर्भावनापूर्ण कोड वेब एप्लिकेशन के संदर्भ में निष्पादित हो सकता है, जिससे संभावित रूप से डेटा चोरी, अनधिकृत कार्रवाइयां और अन्य हानिकारक परिणाम हो सकते हैं।
जावास्क्रिप्ट इंजेक्शन हमलों के सामान्य प्रकार:
1. क्रॉस-साइट स्क्रिप्टिंग (XSS): अन्य उपयोगकर्ताओं द्वारा देखे गए वेब पेजों में दुर्भावनापूर्ण स्क्रिप्ट इंजेक्ट करना।
2. DOM-आधारित XSS: दुर्भावनापूर्ण जावास्क्रिप्ट को निष्पादित करने के लिए DOM वातावरण में हेरफेर करना।
3. SQL इंजेक्शन: SQL कमांड को इंजेक्ट करना जो डेटाबेस पर मनमानी क्वेरी निष्पादित कर सकता है।
जावास्क्रिप्ट इंजेक्शन हमलों का पता लगाना:
1. इनपुट सत्यापन:
- क्लाइंट और सर्वर दोनों पक्षों पर सभी उपयोगकर्ता इनपुट को मान्य करें।
- यह सुनिश्चित करने के लिए नियमित अभिव्यक्तियों का उपयोग करें कि इनपुट अपेक्षित प्रारूपों को पूरा करते हैं।
function validateInput(input) {
const regex = /^[a-zA-Z0-9_]*$/; // Example regex for alphanumeric and underscore
return regex.test(input);
}
const userInput = document.getElementById('user-input').value;
if (!validateInput(userInput)) {
alert('Invalid input');
}
2. सामग्री सुरक्षा नीति (सीएसपी):
उन स्रोतों को नियंत्रित करने के लिए सीएसपी लागू करें जिनसे जावास्क्रिप्ट लोड और निष्पादित किया जा सकता है।
3. उपयोगकर्ता इनपुट से बचना:
दुर्भावनापूर्ण स्क्रिप्ट के निष्पादन को रोकने के लिए सभी उपयोगकर्ता इनपुट से बचें।
function escapeHTML(input) {
const div = document.createElement('div');
div.appendChild(document.createTextNode(input));
return div.innerHTML;
}
const safeInput = escapeHTML(userInput);
document.getElementById('output').innerHTML = safeInput;
जावास्क्रिप्ट इंजेक्शन हमलों को रोकना:
1. तैयार विवरण का उपयोग करें:
एसक्यूएल प्रश्नों के लिए, एसक्यूएल इंजेक्शन से बचने के लिए तैयार कथनों का उपयोग करें।
const query = 'SELECT * FROM users WHERE username = ?';
db.execute(query, [username], (err, results) => {
// Handle results
});
2. उपयोगकर्ता इनपुट को स्वच्छ करें:
HTML को साफ करने और XSS हमलों को रोकने के लिए DOMPurify जैसी लाइब्रेरी का उपयोग करें।
const cleanInput = DOMPurify.sanitize(userInput);
document.getElementById('output').innerHTML = cleanInput;
HTTP-केवल कुकीज़:
जावास्क्रिप्ट के माध्यम से कुकीज़ तक पहुंच को रोकने के लिए HTTP-केवल कुकीज़ का उपयोग करें।
document.cookie = "sessionId=abc123; HttpOnly";
4. जावास्क्रिप्ट क्षमताओं को सीमित करें:
यह सुनिश्चित करने के लिए कि केवल विश्वसनीय स्क्रिप्ट निष्पादित की जाती हैं, सबरिसोर्स इंटीग्रिटी (एसआरआई) जैसी सुविधाओं का उपयोग करें।
[और&&]
उदाहरण:
एक सरल लॉगिन फॉर्म पर विचार करें जो जावास्क्रिप्ट इंजेक्शन के लिए अतिसंवेदनशील हो सकता है। यहां बताया गया है कि आप इसे कैसे सुरक्षित कर सकते हैं:
एचटीएमएल: