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

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

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

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

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

\n

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

\n\n

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

\n

सबसे आम हमला। हमलावर उपयोगकर्ता इनपुट के माध्यम से दुर्भावनापूर्ण SQL कोड इंजेक्ट करता है।

\n

असुरक्षित कोड:

\n
<?php\n$id = $_GET['id'];\n$query = "SELECT * FROM users WHERE id = $id";\n$result = mysqli_query($conn, $query);\n?>
\n

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

\n
<?php\n$stmt = $conn->prepare("SELECT * FROM users WHERE id = ?");\n$stmt->bind_param("i", $_GET['id']);\n$stmt->execute();\n$result = $stmt->get_result();\n?>
\n\n

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

\n

असत्यापित डेटा के माध्यम से पेज पर JavaScript कोड इंजेक्ट करना।

\n

असुरक्षित कोड:

\n
<?php\necho "नमस्ते, " . $_GET['name'];\n?>
\n

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

\n
<?php\necho "नमस्ते, " . htmlspecialchars($_GET['name'], ENT_QUOTES, 'UTF-8');\n?>
\n\n

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

\n

एक हमला जिसमें उपयोगकर्ता अपनी ओर से अवांछित कार्य करता है।

\n

असुरक्षित कोड:

\n
<form action="/delete.php" method="POST">\n    <input type="submit" value="खाता हटाएं">\n</form>
\n

सुरक्षा: CSRF टोकन जोड़ें:

\n
<?php\nsession_start();\n$_SESSION['csrf_token'] = bin2hex(random_bytes(32));\n?>\n<form action="/delete.php" method="POST">\n    <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">\n    <input type="submit" value="खाता हटाएं">\n</form>
\n\n

4. पासवर्ड का असुरक्षित भंडारण

\n

पासवर्ड को सादे टेक्स्ट में या पुराने हैश (MD5, SHA1) के साथ संग्रहीत करना।

\n

असुरक्षित कोड:

\n
<?php\n$password = md5($_POST['password']);\n// या\n$password = sha1($_POST['password']);\n?>
\n

सुरक्षा: password_hash() और password_verify() का उपयोग करें:

\n
<?php\n$hash = password_hash($_POST['password'], PASSWORD_BCRYPT);\n// जाँच:\nif (password_verify($input_password, $hash)) {\n    echo "पासवर्ड सही है";\n}\n?>
\n\n

5. फ़ाइलों के साथ असुरक्षित कार्य (स्थानीय/रिमोट फ़ाइल इंक्लूज़न)

\n

बिना जाँच के उपयोगकर्ता इनपुट के माध्यम से फ़ाइलों को शामिल करना।

\n

असुरक्षित कोड:

\n
<?php\ninclude($_GET['page'] . '.php');\n?>
\n

सुरक्षा: अनुमत फ़ाइलों की श्वेत सूची का उपयोग करें:

\n
<?php\n$allowed_pages = ['home', 'about', 'contact'];\n$page = $_GET['page'] ?? 'home';\nif (in_array($page, $allowed_pages)) {\n    include($page . '.php');\n} else {\n    include('404.php');\n}\n?>
\n\n

6. सत्रों की गलत सेटिंग

\n

अनुमानित सत्र पहचानकर्ताओं का उपयोग या पुनर्जनन का अभाव।

\n

असुरक्षित कोड:

\n
<?php\nsession_start();\n$_SESSION['user_id'] = $user_id;\n// लॉगिन के बाद सत्र पुनर्जीवित नहीं होता\n?>
\n

सुरक्षा:

\n
<?php\nsession_start();\nsession_regenerate_id(true); // लॉगिन के बाद ID पुनर्जीवित करें\n$_SESSION['user_id'] = $user_id;\n?>
\n\n

7. अपर्याप्त इनपुट सत्यापन

\n

उपयोगकर्ता से किसी भी डेटा पर भरोसा करना।

\n

अस

ब्लॉग

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