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 $con = mysql_connect("localhost", "hello", "321"); if (!$con) { die('Could not connect: ' . mysql_error()); } // »ñµÃÓû§ÃûºÍÃÜÂëµÄ´úÂë // תÒåÓû§ÃûºÍÃÜÂ룬ÒÔ±ãÔÚ SQL ÖÐʹÓà $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
Êý¾Ý¿â¹¥»÷¡£±¾ÀýÑÝʾÈç¹ûÎÒÃDz»¶ÔÓû§ÃûºÍÃÜÂëÓ¦Óà 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); ?>