TypeScript अनुप्रयोगों की सुरक्षा: शीर्ष 10 कमजोरियाँ और सुरक्षा

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

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

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

परिचय: TypeScript अनुप्रयोगों की सुरक्षा क्यों महत्वपूर्ण है

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



1. Cross-Site Scripting (XSS)

XSS हमले तब होते हैं जब कोई हमलावर किसी वेब पेज में दुर्भावनापूर्ण स्क्रिप्ट डालता है। TypeScript स्वचालित रूप से इससे रक्षा नहीं करता है।

कमजोर कोड का उदाहरण

function renderUserInput(input: string): string {  return `<div>${input}</div>`;}

// हमलावर प्रेषित करता है: <script>alert('XSS')</script>

समाधान

HTML वर्णों को एस्केप करें या DOMPurify जैसी लाइब्रेरी का उपयोग करें:

import DOMPurify from 'dompurify';

function renderUserInputSafe(input: string): string { const sanitized = DOMPurify.sanitize(input); return `<div>${sanitized}</div>`;}


2. SQL-इंजेक्शन

यदि आप डेटाबेस के साथ TypeScript का उपयोग करते हैं, तो SQL क्वेरी में स्ट्रिंग का अनियंत्रित संयोजन डेटा लीक का कारण बन सकता है।

कमजोर कोड का उदाहरण

async function getUser(id: string): Promise<User | null> {  const query = `SELECT * FROM users WHERE id = '${id}'`;  return await db.query(query);}

समाधान

पैरामीटरीकृत क्वेरी (prepared statements) का उपयोग करें:

async function getUserSafe(id: string): Promise<User | null> {  const query = 'SELECT * FROM users WHERE id = $1';  return await db.query(query, [id]);}


3. Prototype Pollution

यह कमजोरी JavaScript/TypeScript की विशेषता है। हमलावर किसी ऑब्जेक्ट के प्रोटोटाइप को बदल सकता है, जो runtime में सभी ऑब्जेक्ट्स को प्रभावित करेगा।

कमजोर कोड का उदाहरण

function merge(target: any, source: any) {  for (const key in source) {    if (source.hasOwnProperty(key)) {      target[key] = source[key];    }  }}

const user = { name: 'Alice' };merge(user, JSON.parse('{"__proto__": {"isAdmin": true}}'));// अब सभी ऑब्जेक्ट्स में isAdmin: true है

समाधान

खतरनाक गुणों के लिए कुंजियाँ जाँचें और सुरक्षित उपयोगिताओं का उपयोग करें:

function safeMerge(target: Record<string, any>, source: Record<string, any>) {  for (const key in source) {    if (key === '__proto__' || key === 'constructor' || key === 'prototype') continue;    target[key] = source[key];  }}


4. Cross-Site Request Forgery (CSRF)

CSRF हमले उपयोगकर्ता को उस साइट पर अवांछित कार्य करने के लिए मजबूर करते हैं जहाँ वह प्रमाणित है।

TypeScript में समाधान

// CSRF-टोकन उत्पन्न करनाimport crypto from 'crypto';

function generateCsrfToken(): string { return crypto.randomBytes(32).toString('hex');}

// middleware में जाँचfunction csrfMiddleware(req: Request, res: Response, next: NextFunction) { const token = req.headers['x-csrf-token']; if (token !== req.session.csrfToken) { return res.status(403).json({ error: 'CSRF validation failed' }); } next();}


5. असुरक्षित डिसीरियलाइज़ेशन

असत्यापित डेटा पर JSON.parse() या eval() का उपयोग मनमाना कोड निष्पादन का कारण बन सकता है।

कमजोर उदाहरण

function processData(data: string) {  const obj = eval('(' + data + ')');  // ...}

सुरक्षित दृष्टिकोण

function processDataSafe(data: string) {  try {    const obj = JSON.parse(data);    // अतिरिक्त प्रकार सत्यापन    if (typeof obj !== 'object' || obj === null)                

ब्लॉग

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