TypeScript अनुप्रयोगों की सुरक्षा: शुरुआती लोगों के लिए शीर्ष 10 कमजोरियाँ

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

TypeScript अनुप्रयोगों की सुरक्षा: शुरुआती लोगों के लिए शीर्ष 10 कमजोरियाँ

\n\n

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

\n\n

1. dangerouslySetInnerHTML के माध्यम से XSS (Cross-Site Scripting)

\n

सबसे आम समस्याओं में से एक है सैनिटाइज़ेशन के बिना उपयोगकर्ता HTML डालना। TypeScript में, यह अक्सर React या Angular के साथ काम करते समय होता है।

\n\n
// ❌ कमजोर कोड\nfunction UserComment({ comment }: { comment: string }) {\n  return <div dangerouslySetInnerHTML={{ __html: comment }} />;\n}\n\n// ✅ सुरक्षित विकल्प\nimport DOMPurify from 'dompurify';\n\nfunction SafeComment({ comment }: { comment: string }) {\n  const sanitized = DOMPurify.sanitize(comment);\n  return <div dangerouslySetInnerHTML={{ __html: sanitized }} />;\n}
\n\n

2. स्ट्रिंग क्वेरी के माध्यम से SQL-इंजेक्शन

\n

यदि आप कच्चे स्ट्रिंग का उपयोग करते हैं तो TypeScript SQL-इंजेक्शन से रक्षा नहीं करता है। हमेशा पैरामीटरयुक्त क्वेरी का उपयोग करें।

\n\n
// ❌ खतरनाक\nconst query = `SELECT * FROM users WHERE email = '${userEmail}'`;\n\n// ✅ सुरक्षित (Prisma के साथ उदाहरण)\nconst user = await prisma.user.findUnique({\n  where: { email: userEmail }\n});
\n\n

3. कोड में रहस्यों का असुरक्षित भंडारण

\n

API कुंजियाँ, टोकन और पासवर्ड स्रोत कोड में नहीं आने चाहिए। TypeScript JavaScript में संकलित होता है, और सभी स्ट्रिंग पढ़ने योग्य रहती हैं।

\n\n
// ❌ ऐसा कभी न करें\nconst API_KEY = 'sk-1234567890abcdef';\n\n// ✅ पर्यावरण चर का उपयोग करें\nconst API_KEY = process.env.API_KEY;\nif (!API_KEY) throw new Error('API_KEY is missing');
\n\n

4. NoSQL-इंजेक्शन (MongoDB)

\n

Mongoose या ड्राइवर के माध्यम से MongoDB के साथ काम करते समय, गलती से एक क्वेरी ऑब्जेक्ट पास किया जा सकता है जो तर्क में हेरफेर करता है।

\n\n
// ❌ कमजोर कोड\napp.post('/login', async (req, res) => {\n  const user = await User.findOne({ \n    email: req.body.email, \n    password: req.body.password \n  });\n});\n\n// ✅ सुरक्षित विकल्प\napp.post('/login', async (req: Request, res: Response) => {\n  const { email, password } = req.body;\n  if (typeof email !== 'string' || typeof password !== 'string') {\n    return res.status(400).send('Invalid input');\n  }\n  const user = await User.findOne({ email, password });\n});
\n\n

5. CSRF (Cross-Site Request Forgery)

\n

यदि आपका एप्लिकेशन कुकी-आधारित प्रमाणीकरण का उपयोग करता है, तो एक हमलावर उपयोगकर्ता की ओर से कार्य कर सकता है।

\n\n
// ❌ सुरक्षा का अभाव\napp.post('/transfer', (req, res) => {\n  // स्रोत की जाँच के बिना स्थानांतरण निष्पादित करना\n});\n\n// ✅ CSRF-टोकन के माध्यम से सुरक्षा (csurf के साथ उदाहरण)\nimport csrf from 'csurf';\nconst csrfProtection = csrf({ cookie: true });\napp.post('/transfer', csrfProtection, (req, res) => {\n  // सुरक्षित निष्पादन\n});
\n\n

6. Prototype Pollution (प्रोटोटाइप प्रदूषण)

\n

बिना जाँच के ऑब्जेक्ट को मर्ज करने पर प्रोटोटाइप के गुणों को अधिलेखित किया जा सकता है, जिससे कमजोरियाँ उत्पन्न होती हैं।

\n\n
// ❌ खतरनाक\nfunction merge(target: any, source: any) {\n  for (const key in source) {\n    target[key] = source[key];\n  }\n}\n\n// ✅ सुरक्षित\nfunction safeMerge(target: Record<string, any>, source: Record<string, any>) {\n  for (const key in source) {\n    if (Object.prototype.hasOwnProperty.call(source, key)) {\n      target[key] = source[key];\n    }\n  }\n}
\n\n

7. त्रुटियों के माध्यम से सूचना का रिसाव

\n

स्टैक-ट्रेस और डेटाबेस विवरण उपयोगकर्ता को नहीं दिखाए जाने चाहिए। TypeScript सख्त टाइपों के कारण सतर्कता को कम कर सकता है।

\n\n
// ❌ खराब\napp.use((err, req, res, next) => {\n  res.status(500).json({ error: err.m                

ब्लॉग

पुस्तक अनुशंसाएँ