PHP अनुप्रयोग सुरक्षा: व्यवहार में शीर्ष 10 कमजोरियाँ

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

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

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

PHP अनुप्रयोग सुरक्षा: व्यवहार में शीर्ष 10 कमजोरियाँ

\n

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

\n\n

1. SQL इंजेक्शन (SQL Injection)

\n

सबसे खतरनाक और सामान्य कमजोरी। हमलावर इनपुट फ़ील्ड के माध्यम से SQL कोड डालता है, जिससे डेटाबेस तक पहुँच प्राप्त होती है।

\n

कमजोर कोड:

\n
$username = $_POST['username'];\n$query = "SELECT * FROM users WHERE username = '$username'";
\n

हमला: इनपुट ' OR '1'='1 क्वेरी को SELECT * FROM users WHERE username = '' OR '1'='1' में बदल देता है, जो सभी उपयोगकर्ताओं को लौटाता है।

\n

सुरक्षा: PDO के साथ तैयार क्वेरी (prepared statements) का उपयोग करें:

\n
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username");\n$stmt->execute(['username' => $_POST['username']]);
\n\n

2. XSS (क्रॉस-साइट स्क्रिप्टिंग)

\n

हमलावर JavaScript कोड डालता है जो पीड़ित के ब्राउज़र में निष्पादित होता है। यह तीन प्रकार का होता है: reflected, stored और DOM-based।

\n

कमजोर कोड (stored XSS):

\n
echo "<div>" . $comment . "</div>";
\n

सुरक्षा: htmlspecialchars() का उपयोग करके आउटपुट को एस्केप करें:

\n
echo "<div>" . htmlspecialchars($comment, ENT_QUOTES, 'UTF-8') . "</div>";
\n

HTML सामग्री के लिए HTML Purifier जैसी लाइब्रेरी का उपयोग करें।

\n\n

3. CSRF (क्रॉस-साइट रिक्वेस्ट फोर्जरी)

\n

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

\n

सुरक्षा: CSRF टोकन लागू करें:

\n
// टोकन जनरेशन\n$_SESSION['csrf_token'] = bin2hex(random_bytes(32));\n\n// फॉर्म में\necho '<input type="hidden" name="csrf_token" value="' . $_SESSION['csrf_token'] . '">';\n\n// जाँच\nif ($_POST['csrf_token'] !== $_SESSION['csrf_token']) {\n    die('CSRF हमले का पता चला');\n}
\n\n

4. पथ ट्रैवर्सल (निर्देशिका भ्रमण)

\n

हमलावर सिस्टम फ़ाइलों (/etc/passwd आदि) तक पहुँचने के लिए फ़ाइल पथों में हेरफेर करता है।

\n

कमजोर कोड:

\n
$file = $_GET['file'];\ninclude("pages/" . $file);
\n

सुरक्षा: श्वेत सूची या basename() फ़ंक्शन का उपयोग करें:

\n
$allowed = ['home', 'about', 'contact'];\n$file = basename($_GET['file']);\nif (in_array($file, $allowed)) {\n    include("pages/$file.php");\n} else {\n    die('अमान्य फ़ाइल');\n}
\n\n

5. फ़ाइल अपलोड कमजोरियाँ

\n

हमलावर छवि के बजाय PHP स्क्रिप्ट अपलोड करता है, जिससे सर्वर तक दूरस्थ पहुँच प्राप्त होती है।

\n

सुरक्षा:

\n
    \n
  • फ़ाइल का MIME प्रकार जाँचें: $_FILES['file']['type']
  • \n
  • वास्तविक प्रकार निर्धारित करने के लिए finfo का उपयोग करें
  • \n
  • .htaccess के माध्यम से अपलोड फ़ोल्डर में स्क्रिप्ट निष्पादन प्रतिबंधित करें
  • \n
  • अद्वितीय फ़ाइल नाम जनरेट करें: md5(uniqid()) . '.jpg'
  • \n
\n
$finfo = finfo_open(FILEINFO_MIME_TYPE);\n$mime = finfo_file($finfo, $_FILES['file']['tmp_name']);\n$allowed = ['image/jpeg', 'image/png'];\nif (!in_array($mime, $allowed)) {\n    die('अमान्य फ़ाइल प्रकार');\n}
\n\n

6. सत्र फिक्सेशन

\n

हमलावर उपयोगकर्ता पर एक ज्ञात सत्र पहचानकर्ता थोपता है, ताकि प्रमाणीकरण के बाद इसे इंटरसेप्ट कर सके।

\n

सुरक्षा: सफल

ब्लॉग

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