Melarikan diri aksara khas dalam unescaped_string, dengan mengambil kira tetapan sambungan aksara semasa supaya ia selamat diletakkan dalam mysql_query() itu. Jika data binari hendak dimasukkan, fungsi ini mesti digunakan
Watak berikut terjejas:
Jika berjaya, fungsi mengembalikan rentetan yang terlepas. Jika gagal, kembali palsu.
mysql_real_escape_string(string,connection)
参数 | 描述 |
---|---|
string | 必需。规定要转义的字符串。 |
connection | 可选。规定 MySQL 连接。如果未规定,则使用上一个连接。 |
Penerangan
Fungsi ini melepaskan aksara khas dalam rentetan dan mengambil kira set aksara semasa sambungan, jadi ia selamat digunakan dengan mysql_query().
Petua dan Nota
Petua: Anda boleh menggunakan fungsi ini untuk menghalang serangan pangkalan data.
Contoh
Contoh 1
// Kod untuk mendapatkan nama pengguna dan kata laluan
// Escape nama pengguna dan kata laluan untuk digunakan dalam SQL
$user = mysql_real_escape_string($user);
$pwd = mysql_real_escape_string($pwd);
$sql = "PILIH * DARI pengguna DI MANA
pengguna='"
mysql_close($con);
?>
Serangan pangkalan data. Contoh ini menunjukkan perkara yang berlaku jika kita tidak menggunakan fungsi mysql_real_escape_string() pada nama pengguna dan kata laluan:
WHERE user='{$_POST['user']}'
DAN kata laluan='{$_POST['pwd']}'";
mysql_query($sql);
// Boleh apa sahaja yang dimasukkan oleh pengguna, seperti:
$_POST['user'] = 'john';
$_POST['pwd '] = "' ATAU ''='";
mysql_close($con);
?>
PILIH * DARI pengguna
WHERE user='john' AND password='' ATAU ''='' Ini bermakna mana-mana pengguna boleh log masuk tanpa memasukkan kata laluan yang sah.
Cara yang betul untuk mencegah serangan pangkalan data:
die('Tidak dapat menyambung: ' . mysql_error()) ;
}
// Lakukan SQL selamat
$user = check_input($_POST['user']);
$sql = " SELECT * DARI pengguna DI MANA
pengguna=$pengguna DAN kata laluan=$pwd";
mysql_query($sql);
?>