JSON वेब टोकन (JWT) का व्यापक रूप से एपीआई प्रमाणीकरण और डेटा एक्सचेंज को सुरक्षित करने के लिए उपयोग किया जाता है। हालाँकि, अनुचित कार्यान्वयन और प्रबंधन उन कमजोरियों को उजागर कर सकता है जो टोकन जालसाजी और डेटा हेरफेर का कारण बनती हैं। इस ब्लॉग में, हम सामान्य JWT कमजोरियों, हमलों के वास्तविक दुनिया के उदाहरण और इन जोखिमों को कम करने के लिए सर्वोत्तम प्रथाओं का पता लगाएंगे।
जेडब्ल्यूटी दो पक्षों के बीच स्थानांतरित किए जाने वाले दावों का प्रतिनिधित्व करने का एक कॉम्पैक्ट, यूआरएल-सुरक्षित साधन है। इसमें तीन भाग होते हैं: हेडर, पेलोड और सिग्नेचर, बेस64 में एन्कोड किया गया।
जेडब्ल्यूटी संरचना:
{ "header": { "alg": "HS256", "typ": "JWT" }, "payload": { "sub": "1234567890", "name": "John Doe", "iat": 1516239022 }, "signature": "SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" }
1. एल्गोरिथम कन्फ्यूजन अटैक:
हमलावर कमजोर एल्गोरिदम का फायदा उठा सकते हैं या टोकन हेडर में एल्गोरिदम को शून्य में बदल सकते हैं, जिससे टोकन जालसाजी हो सकती है।
उदाहरण:
{ "alg": "none", "typ": "JWT" }
शमन:
हमेशा सर्वर साइड पर एल्ग पैरामीटर को मान्य करें और "कोई नहीं" या कमजोर एल्गोरिदम वाले टोकन को अस्वीकार करें।
सुरक्षित कार्यान्वयन:
const jwt = require('jsonwebtoken'); const payload = { sub: "1234567890", name: "John Doe" }; const secret = 'your-256-bit-secret'; const token = jwt.sign(payload, secret, { algorithm: 'HS256' }); jwt.verify(token, secret, { algorithms: ['HS256'] }, function(err, decoded) { if (err) throw new Error('Token verification failed'); console.log(decoded); });
2. कुंजी इंजेक्शन हमला:
हमलावर नई कुंजी शामिल करने के लिए पेलोड में हेरफेर कर सकते हैं, जिससे अनधिकृत पहुंच हो सकती है।
उदाहरण:
{ "sub": "1234567890", "name": "John Doe", "admin": true }
शमन:
सुनिश्चित करें कि दावे ठीक से मान्य हैं और संवेदनशील जानकारी पेलोड में संग्रहीत नहीं है।
सुरक्षित कार्यान्वयन:
const payload = { sub: "1234567890", name: "John Doe" }; const token = jwt.sign(payload, secret, { algorithm: 'HS256' }); jwt.verify(token, secret, function(err, decoded) { if (err) throw new Error('Token verification failed'); if (decoded.admin) throw new Error('Unauthorized access'); console.log(decoded); });
3. कमजोर गुप्त कुंजी:
कमजोर या पूर्वानुमेय गुप्त कुंजियों का उपयोग करने से क्रूर हमले हो सकते हैं।
शमन:
मजबूत, बेतरतीब ढंग से उत्पन्न गुप्त कुंजियों का उपयोग करें और उन्हें नियमित रूप से घुमाएँ।
सुरक्षित कार्यान्वयन:
const crypto = require('crypto'); const secret = crypto.randomBytes(64).toString('hex'); const token = jwt.sign(payload, secret, { algorithm: 'HS256' }); jwt.verify(token, secret, function(err, decoded) { if (err) throw new Error('Token verification failed'); console.log(decoded); });
यहां Node.js एप्लिकेशन में JWT को सुरक्षित रूप से लागू करने का एक पूरा उदाहरण दिया गया है:
चरण 1: निर्भरता स्थापित करें
npm install jsonwebtoken express body-parser
चरण 2: एक सरल सर्वर बनाएं
const express = require('express'); const bodyParser = require('body-parser'); const jwt = require('jsonwebtoken'); const crypto = require('crypto'); const app = express(); app.use(bodyParser.json()); const secret = crypto.randomBytes(64).toString('hex'); app.post('/login', (req, res) => { const { username, password } = req.body; // Authenticate user (dummy check for example) if (username === 'user' && password === 'pass') { const payload = { username }; const token = jwt.sign(payload, secret, { algorithm: 'HS256', expiresIn: '1h' }); res.json({ token }); } else { res.status(401).json({ message: 'Invalid credentials' }); } }); app.get('/protected', (req, res) => { const token = req.headers['authorization']; if (!token) return res.status(403).json({ message: 'No token provided' }); jwt.verify(token, secret, { algorithms: ['HS256'] }, (err, decoded) => { if (err) return res.status(500).json({ message: 'Failed to authenticate token' }); res.json({ message: 'Access granted', user: decoded }); }); }); app.listen(3000, () => { console.log('Server running on port 3000'); });
आपके एप्लिकेशन की सुरक्षा बनाए रखने के लिए JWT कमजोरियों को समझना और कम करना महत्वपूर्ण है। सर्वोत्तम प्रथाओं का पालन करके और जेडब्ल्यूटी को ठीक से संभालकर, आप मजबूत एपीआई सुरक्षा सुनिश्चित करते हुए, टोकन जालसाजी और डेटा हेरफेर को रोक सकते हैं।
जेडब्ल्यूटी कमजोरियों से बचाने के लिए इन सर्वोत्तम प्रथाओं को लागू करके अब अपने एपीआई सुरक्षित करें!
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3