PHP mysql_real_escape_string() ఫంక్షన్
నిర్వచన మరియు వినియోగం
mysql_real_escape_string() ఫంక్షన్ డేటాబేస్ స్ట్రింగ్ లో వినియోగించే ప్రత్యేక అక్షరాలను ట్రాన్స్లేట్ చేస్తుంది.
ఈ అక్షరాలు ప్రభావితం అవుతాయి:
- \x00
- \n
- \r
- \
- '
- "
- \x1a
విజయవంతంగా అనువాదం జరిగితే, ఫంక్షన్ ట్రాన్స్లేట్ చేయబడిన స్ట్రింగ్ ని తిరిగి ఇవ్వబడుతుంది. విఫలమైతే, false తిరిగి ఇవ్వబడుతుంది.
వినియోగం
mysql_real_escape_string(string,connection)
పారామీటర్స్ | వివరణ |
---|---|
string | అవసరం. ట్రాన్స్లేట్ చేయాల్సిన స్ట్రింగ్ ని నిర్దేశించండి. |
connection | ఆప్షనల్. నిర్దేశించిన మైక్రోస్ కనెక్షన్ ని నిర్దేశించండి. నిర్దేశించకుండా ఉంటే ముందస్తు కనెక్షన్ ని వినియోగించబడుతుంది. |
వివరణ
ఈ ఫంక్షన్ ద్వారా string లో ప్రత్యేక అక్షరాలను ట్రాన్స్లేట్ చేసి ప్రస్తుత కనెక్షన్ చిహ్నం పెంచి సురక్షితంగా వినియోగించవచ్చు mysql_query().
అడ్వైజరీ మరియు కామెంట్స్
అడ్వైజరీ:ఈ ఫంక్షన్ను వినియోగించడం ద్వారా డేటాబేస్ దాడులను నివారించవచ్చు.
ఉదాహరణ
ఉదాహరణ 1
<?php $con = mysql_connect("localhost", "hello", "321"); if (!$con) { die('Could not connect: ' . mysql_error()); } // వినియోగదారి పేరు మరియు పాస్వర్డ్ని పొందే కోడ్లు // వినియోగదారి పేరు మరియు పాస్వర్డ్ని ట్రాన్స్లేట్ చేసి డేటాబేస్లో వినియోగించడానికి $user = mysql_real_escape_string($user); $pwd = mysql_real_escape_string($pwd); $sql = "SELECT * FROM users WHERE user='" . $user . "' AND password='" . $pwd . "'" // మరిన్ని కోడ్లు mysql_close($con); ?>
ఉదాహరణ 2
డేటాబేస్ దాడి. ఈ ఉదాహరణలో మేము వినియోగదారి పేరు మరియు పాస్వర్డ్ని mysql_real_escape_string() ఫంక్షన్ వినియోగించకుండా ఎలా ఉంటుందో చూపిస్తుంది:
<?php $con = mysql_connect("localhost", "hello", "321"); if (!$con) { die('Could not connect: ' . mysql_error()); } $sql = "SELECT * FROM users WHERE user='{$_POST['user']}' AND password='{$_POST['pwd']}'"; mysql_query($sql); // వినియోగదారి పేరు మరియు పాస్వర్డ్ ని పరిశీలించకుండా ఉంటారు // వినియోగదారి నిర్వహణలో అన్ని కంటెంట్లు ఉండవచ్చు, ఉదాహరణకు: $_POST['user'] = 'john'; $_POST['pwd'] = "' OR ''='"; // కొన్ని కోడ్లు... mysql_close($con); ?>
అప్పుడు SQL కొరకు అనువాదం ఇలా అవుతుంది:
SELECT * FROM users WHERE user='john' AND password='' OR ''=''
ఇది ఏ వినియోగదారుడు చెల్లని పాస్వర్డ్ నివ్వకుండా లాగిన్ అయ్యేలా అవుతుంది.
ఉదాహరణ 3
డేటాబేస్ హ్యాక్కింగ్ నివారణ సరైన పద్ధతి:
<?php function check_input($value) { // కుదుర్చుకున్న లోడ్స్ తొలగించండి if (get_magic_quotes_gpc()) { $value = stripslashes($value); } // సంఖ్య కాది అయితే కోట్లు జోడించండి if (!is_numeric($value)) { $value = "'" . mysql_real_escape_string($value) . "'"; } return $value; } $con = mysql_connect("localhost", "hello", "321"); if (!$con) { die('Could not connect: ' . mysql_error()); } // సురక్షితమైన SQL $user = check_input($_POST['user']); $pwd = check_input($_POST['pwd']); $sql = "SELECT * FROM users WHERE user=$user AND password=$pwd"; mysql_query($sql); mysql_close($con); ?>