"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > जेडब्ल्यूटी टोकन को टोकन जालसाजी और डेटा हेरफेर हमले से सुरक्षित रखें

जेडब्ल्यूटी टोकन को टोकन जालसाजी और डेटा हेरफेर हमले से सुरक्षित रखें

2024-08-21 को प्रकाशित
ब्राउज़ करें:284

Protect JWT Token from Token Forgery and Data Manipulation Attack

परिचय:

JSON वेब टोकन (JWT) का व्यापक रूप से एपीआई प्रमाणीकरण और डेटा एक्सचेंज को सुरक्षित करने के लिए उपयोग किया जाता है। हालाँकि, अनुचित कार्यान्वयन और प्रबंधन उन कमजोरियों को उजागर कर सकता है जो टोकन जालसाजी और डेटा हेरफेर का कारण बनती हैं। इस ब्लॉग में, हम सामान्य JWT कमजोरियों, हमलों के वास्तविक दुनिया के उदाहरण और इन जोखिमों को कम करने के लिए सर्वोत्तम प्रथाओं का पता लगाएंगे।

जेडब्ल्यूटी क्या है?

जेडब्ल्यूटी दो पक्षों के बीच स्थानांतरित किए जाने वाले दावों का प्रतिनिधित्व करने का एक कॉम्पैक्ट, यूआरएल-सुरक्षित साधन है। इसमें तीन भाग होते हैं: हेडर, पेलोड और सिग्नेचर, बेस64 में एन्कोड किया गया।

जेडब्ल्यूटी संरचना:

{
  "header": {
    "alg": "HS256",
    "typ": "JWT"
  },
  "payload": {
    "sub": "1234567890",
    "name": "John Doe",
    "iat": 1516239022
  },
  "signature": "SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
}

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

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);
});

पूर्ण सुरक्षित JWT कार्यान्वयन उदाहरण:

यहां 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 कार्यान्वयन के लिए सर्वोत्तम अभ्यास:

  • मजबूत एल्गोरिदम का उपयोग करें: बेहतर सुरक्षा के लिए HS256 की तुलना में RS256 या ES256 को प्राथमिकता दें।
  • टोकन समाप्ति की पुष्टि करें: यह सुनिश्चित करने के लिए कि टोकन समाप्त नहीं हुआ है, हमेशा व्यय दावे की जांच करें।
  • गुप्त रहस्यों को सुरक्षित रूप से संग्रहीत करें: गुप्त कुंजियों को किसी सुरक्षित स्थान पर रखें, जैसे पर्यावरण चर या सुरक्षित वॉल्ट।
  • उचित त्रुटि प्रबंधन लागू करें: संवेदनशील त्रुटि संदेशों को उजागर करने से बचें जो हमलावरों की सहायता कर सकते हैं।
  • HTTPS का उपयोग करें: टोकन अवरोधन को रोकने के लिए सुनिश्चित करें कि सभी संचार HTTPS पर हैं।

निष्कर्ष:

आपके एप्लिकेशन की सुरक्षा बनाए रखने के लिए JWT कमजोरियों को समझना और कम करना महत्वपूर्ण है। सर्वोत्तम प्रथाओं का पालन करके और जेडब्ल्यूटी को ठीक से संभालकर, आप मजबूत एपीआई सुरक्षा सुनिश्चित करते हुए, टोकन जालसाजी और डेटा हेरफेर को रोक सकते हैं।

जेडब्ल्यूटी कमजोरियों से बचाने के लिए इन सर्वोत्तम प्रथाओं को लागू करके अब अपने एपीआई सुरक्षित करें!

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/rigalpatel001/protect-jwt-token-from-token-forgery-and-data-manipulation-attack-28c8?1 यदि कोई उल्लंघन है, तो कृपया स्टडी_गोलंग@163 से संपर्क करें इसे हटाने के लिए .com
नवीनतम ट्यूटोरियल अधिक>

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

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

Copyright© 2022 湘ICP备2022001581号-3