PHP mysql_real_escape_string() फ़ंक्शन
विभाषण और उपयोग
mysql_real_escape_string() फ़ंक्शन डाटाबेस में उपयोग किए जाने वाले SQL वाक्य में उपयोग किए जाने वाले विशिष्ट चरित्रों को अनुवाद करता है。
इन चरित्रों पर असर पड़ता है:
- \x00
- \n
- \r
- \
- '
- "
- \x1a
यदि सफल होता है, तो फ़ंक्शन अनुवादित चरित्र वापस करता है। अगर असफल होता है, तो false वापस करता है。
व्याकरण
mysql_real_escape_string(string,connection)
पारामीटर | वर्णन |
---|---|
string | अनिवार्य. अनुवाद करने के लिए निर्धारित चरित्र निर्धारित करें。 |
connection | वैकल्पिक. MySQL कनेक्शन निर्धारित करें। अगर निर्धारित नहीं है, तो पिछला कनेक्शन इस्तेमाल किया जाएगा。 |
वर्णन
इस फ़ंक्शन जो string में विशिष्ट चरित्रों का अनुवाद करें, और जोड़े गए वर्तमान चारित्रसमूह को ध्यान में रखते हुए, इसे सुरक्षित रूप से mysql_query().
सूचना और टिप्पणी
सूचना:इस फ़ंक्शन का उपयोग करके डाटाबेस हमले से बचने की सुरक्षा प्रदान कर सकते हैं。
उदाहरण
उदाहरण 1
<?php $कॉन = मायसक्यूएल_कनेक्शन("लोकलहोस्ट", "हेल्लो", "321"); अगर (!$कॉन) { डाई('कनेक्शन नहीं कर सका: ' . मायसक्यूएल_एररर); } // उपयोगकर्ता नाम और पासवर्ड को प्राप्त करने वाला कोड // उपयोगकर्ता नाम और पासवर्ड को उपयोग में आने पहले अनुवादित करें $user = mysql_real_escape_string($user); $pwd = mysql_real_escape_string($pwd); $स्क्वएल = "SELECT * FROM users WHERE" user='" . $user . "' AND password='" . $pwd . "'" // और कुछ कोड मायसक्यूएल_क्लोज($कॉन); ?>
उदाहरण 2
डाटाबेस हमला. इस उदाहरण में दिखाया गया है कि अगर हम उपयोगकर्ता नाम और पासवर्ड पर mysql_real_escape_string() फ़ंक्शन लगाते नहीं हैं, तो क्या होगा:
<?php $कॉन = मायसक्यूएल_कनेक्शन("लोकलहोस्ट", "हेल्लो", "321"); अगर (!$कॉन) { डाई('कनेक्शन नहीं कर सका: ' . मायसक्यूएल_एररर); } $sql = "SELECT * FROM users WHERE user='{$_POST['user']}' AND password='{$_POST['pwd']}'"; मायसक्यूएल_क्यूएरी($स्क्वएल); // उपयोगकर्ता नाम और पासवर्ड की जांच नहीं की जाएगी // इसके लिए उपयोगकर्ता इनपुट की कोई भी सामग्री हो सकती है, जैसे: $_POST['user'] = 'john'; $_POST['pwd'] = "' OR ''='"; // कुछ कोड... मायसक्यूएल_क्लोज($कॉन); ?>
तब SQL खोज इस तरह होगी:
SELECT * FROM users WHERE उपयोगकर्ता='जॉन' और पासवर्ड='' या ''='' OR ''=''
इसका मतलब है कि किसी भी उपयोगकर्ता को वैध पासवर्ड नहीं देने पड़े और वह लॉगिन कर सकता है。
उदाहरण 3
डाटाबेस हमले को रोकने का सही तरीका:
<?php फ़ंक्शन चेक_इनपुट($वैल्यू) { // अनुक्रमित लट्टी निकालें अगर (गेट_मैजिक_क्वोटेज_जीपीसी()) { $वैल्यू = स्ट्रिप्सेशन्स($वैल्यू);; } // यदि नंबर नहीं है तो अनुच्छेद जोड़ें अगर (!इस_नंबरिक($वैल्यू)) { $वैल्यू = "'" . मायसक्यूएल_रीयल_एस्केप_स्ट्रिंग($वैल्यू); . "'"; } रिटर्न $वैल्यू; } $कॉन = मायसक्यूएल_कनेक्शन("लोकलहोस्ट", "हेल्लो", "321"); अगर (!$कॉन) { डाई('कनेक्शन नहीं कर सका: ' . मायसक्यूएल_एररर); } // सुरक्षित SQL $उपयोगकर्ता = चेक_इनपुट($_पोस्ट['उपयोगकर्ता']); $पासवर्ड = चेक_इनपुट($_पोस्ट['पासवर्ड']); $स्क्वएल = "SELECT * FROM users WHERE" उपयोगकर्ता=$उपयोगकर्ता और पासवर्ड=$पासवर्ड"; मायसक्यूएल_क्यूएरी($स्क्वएल); मायसक्यूएल_क्लोज($कॉन); ?>