PHP सुरक्षा फ़ंक्शन: strip_tags, filter_var, Md5 और sha1
संभावित सुरक्षा खतरे
वे मूलतः दो समूह के लोग हैं जो आपके सिस्टम पर हमला कर सकते हैं
- हैकर्स - अनधिकृत डेटा तक पहुंच प्राप्त करने या एप्लिकेशन को बाधित करने के इरादे से
- उपयोगकर्ता - वे अनजाने में फॉर्म में गलत पैरामीटर दर्ज कर सकते हैं जिसका वेबसाइट या वेब एप्लिकेशन पर नकारात्मक प्रभाव पड़ सकता है।
निम्नलिखित प्रकार के हमले हैं जिनसे हमें सावधान रहने की आवश्यकता है।
SQL इंजेक्शन - इस प्रकार का हमला हानिकारक कोड जोड़ता है एसक्यूएल बयान।
यह कार्य या तो उपयोगकर्ता इनपुट फॉर्म या वेरिएबल्स का उपयोग करने वाले URL का उपयोग करके किया जाता है।
संलग्न कोड SQL कथन के WHERE क्लॉज़ में शर्त पर टिप्पणी करता है। संलग्न कोड यह भी कर सकता है;
- ऐसी शर्त डालें जो हमेशा सत्य होगी
- तालिका से डेटा मिटाएँ
- तालिका में डेटा अपडेट करें
- इस प्रकार के हमले का उपयोग आमतौर पर किसी एप्लिकेशन तक अनधिकृत पहुंच प्राप्त करने के लिए किया जाता है।
क्रॉस-साइट स्क्रिप्टिंग – इस प्रकार के हमले में आमतौर पर हानिकारक कोड डाला जाता है Javaस्क्रिप्ट। यह उपयोगकर्ता इनपुट फ़ॉर्म जैसे कि हमसे संपर्क करें और टिप्पणी फ़ॉर्म का उपयोग करके किया जाता है। ऐसा इसलिए किया जाता है;
- संवेदनशील जानकारी पुनः प्राप्त करें जैसे कुकीज़ डेटा
- उपयोगकर्ता को किसी भिन्न URL पर पुनर्निर्देशित करें.
- अन्य खतरों में शामिल हो सकते हैं - PHP कोड इंजेक्शन, शेल इंजेक्शन, ईमेल इंजेक्शन, स्क्रिप्ट स्रोत कोड प्रकटीकरण आदि।
PHP अनुप्रयोग सुरक्षा सर्वोत्तम अभ्यास
आइए अब PHP सुरक्षा के कुछ सर्वोत्तम अभ्यासों पर नज़र डालें, जिन पर हमें अपने अनुप्रयोगों को विकसित करते समय विचार करना चाहिए।
PHP स्ट्रिप_टैग्स
strip_tags फ़ंक्शन HTML को हटा देता है, Javaलिपि या स्ट्रिंग से PHP टैग्स.
यह फ़ंक्शन तब उपयोगी होता है जब हमें अपने एप्लिकेशन को क्रॉस साइट स्क्रिप्टिंग जैसे हमलों से बचाना होता है।
आइए एक ऐसे एप्लिकेशन पर विचार करें जो उपयोगकर्ताओं से टिप्पणियां स्वीकार करता है।
<?php $user_input = "Your site rocks"; echo "<h4>My Commenting System</h4>"; echo $user_input; ?>
मान लें कि आपने comments.php को phptuts फ़ोल्डर में सहेजा है, तो URL पर ब्राउज़ करेंhttp://localhost/phptuts/comments.php
मान लें कि आपको उपयोगकर्ता इनपुट के रूप में निम्नलिखित प्राप्त होता है alert(‘Your site sucks!’);
<?php
$user_input = "<script>alert('Your site sucks!');</script>";
echo "<h4>My Commenting System</h4>";
echo $user_input;
?>
URL पर ब्राउज़ करें http://localhost/phptuts/comments.php
आइए अब strip_tags फ़ंक्शन का उपयोग करके अपने एप्लिकेशन को ऐसे हमलों से सुरक्षित करें।
<?php
$user_input = "<script>alert('Your site sucks!');</script>";
echo strip_tags($user_input);
?>
URL पर ब्राउज़ करें http://localhost/phptuts/comments.php
PHP फ़िल्टर_var फ़ंक्शन
फ़िल्टर_var फ़ंक्शन का उपयोग डेटा को मान्य और स्वच्छ करने के लिए किया जाता है।
सत्यापन जाँचता है कि डेटा सही प्रकार का है या नहीं। स्ट्रिंग पर संख्यात्मक सत्यापन जाँच गलत परिणाम देती है।
स्वच्छता का अर्थ है किसी शब्द से अवैध अक्षरों को हटाना। स्ट्रिंग.
सम्पूर्ण संदर्भ के लिए इस लिंक को देखें फ़िल्टर_वर
यह कोड टिप्पणी प्रणाली के लिए है।
यह टैग हटाने के लिए filter_var फ़ंक्शन और FILTER_SANITIZE_STRIPPED स्थिरांक का उपयोग करता है।
<?php
$user_input = "<script>alert('Your site sucks!');</script>";
echo filter_var($user_input, FILTER_SANITIZE_STRIPPED);
?>
आउटपुट:
alert('Your site sucks!');
mysqli_real_escape_string फ़ंक्शन इस फ़ंक्शन का उपयोग किसी अनुप्रयोग को SQL इंजेक्शन से बचाने के लिए किया जाता है।
मान लीजिए कि हमारे पास उपयोगकर्ता आईडी और पासवर्ड को मान्य करने के लिए निम्नलिखित SQL कथन है।
<?php SELECT uid,pwd,role FROM users WHERE uid = 'admin' AND password = 'pass'; ?>
दुर्भावनापूर्ण उपयोगकर्ता उपयोगकर्ता आईडी टेक्स्ट बॉक्स में निम्नलिखित कोड दर्ज कर सकता है। ' या 1 = 1 — और पासवर्ड टेक्स्ट बॉक्स में 1234 आइए प्रमाणीकरण मॉड्यूल को कोड करें
<?php $uid = "' OR 1 = 1 -- "; $pwd = "1234"; $sql = "SELECT uid,pwd,role FROM users WHERE uid = '$uid' AND password = '$pwd';"; echo $sql; ?>
अंतिम परिणाम होगा
SELECT uid,pwd,role FROM users WHERE uid = '' OR 1 = 1 -- ' AND password = '1234';
यहाँ,
- “SELECT * FROM users WHERE user_id = ”” खाली उपयोगकर्ता आईडी के लिए परीक्षण करता है
- “' OR 1 = 1 “ एक शर्त है जो हमेशा सत्य होगी
- “–” उस भाग पर टिप्पणी करता है जो पासवर्ड के लिए परीक्षण करता है।
उपरोक्त क्वेरी सभी उपयोगकर्ताओं को वापस कर देगी। आइए अब हमारे लॉगिन मॉड्यूल को सुरक्षित करने के लिए mysqli_real_escape_string फ़ंक्शन का उपयोग करें।
<?php
$uid = mysqli_real_escape_string("' OR 1 = 1 -- ");
$pwd = mysqli_real_escape_string("1234");
$sql = "SELECT uid,pwd,role FROM users WHERE uid = '$uid' AND password = '$pwd';";
echo $sql;
?>
उपरोक्त कोड आउटपुट देगा
SELECT uid,pwd,role FROM users WHERE uid = '\' OR 1 = 1 -- ' AND password = '1234';
नोट दूसरा एकल उद्धरण हमारे लिए बच गया है, इसे उपयोगकर्ता आईडी के हिस्से के रूप में माना जाएगा और पासवर्ड पर टिप्पणी नहीं की जाएगी।
PHP Md5 और PHP sha1
एमडी5 मैसेज डाइजेस्ट 5 का संक्षिप्त रूप है और एसएचए1 सिक्योर हैश एल्गोरिथम 1 का संक्षिप्त रूप है।
इन दोनों का उपयोग स्ट्रिंग्स को एन्क्रिप्ट करने के लिए किया जाता है।
एक बार स्ट्रिंग एन्क्रिप्ट हो जाने के बाद, उसे डिक्रिप्ट करना कठिन होता है।
डेटाबेस में पासवर्ड संग्रहीत करते समय Md5 और sha1 बहुत उपयोगी होते हैं।
नीचे दिया गया कोड md5 और sha1 का कार्यान्वयन दर्शाता है
<?php
echo "MD5 Hash: " . md5("password");
echo "SHA1 Hash: " . sha1("password");
?>
मान लें कि आपने hashes.php फ़ाइल को phptuts फ़ोल्डर में सहेजा है, तो URL पर ब्राउज़ करें
जैसा कि आप उपरोक्त हैश से देख सकते हैं, यदि किसी हमलावर को आपके डेटाबेस तक पहुंच प्राप्त हो जाती है, तो भी उन्हें लॉग-इन करने के लिए पासवर्ड नहीं पता होगा।
सारांश
- सुरक्षा से तात्पर्य किसी एप्लिकेशन को आकस्मिक और दुर्भावनापूर्ण हमलों से बचाने के लिए किए गए उपायों से है।
- strip_tags फ़ंक्शन का उपयोग टैग हटाने के लिए किया जाता है जैसे इनपुट डेटा से
- फ़िल्टर_var फ़ंक्शन इनपुट डेटा को मान्य और साफ़ करता है
- mysqli_real_escape_string का उपयोग SQL कथन को साफ़ करने के लिए किया जाता है। यह कथनों से दुर्भावनापूर्ण वर्णों को हटाता है
- पासवर्ड एन्क्रिप्ट करने के लिए MD5 और SHA1 दोनों का उपयोग किया जाता है।




