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"
उपयोगकर्ता=$उपयोगकर्ता और पासवर्ड=$पासवर्ड";
मायसक्यूएल_क्यूएरी($स्क्वएल);
मायसक्यूएल_क्लोज($कॉन);
?>