PHP mysql_real_escape_string() 函数
ການອະທິບາຍແລະການນໍາໃຊ້
ຫົວຂໍ້ mysql_real_escape_string() ທີ່ປ່ຽນພາສາທີ່ນຳໃຊ້ໃນຄຳສັນຍາລັກ SQL...
ນັກສັນຍາລັກສະນະທີ່ມີຜົນກະທົບ:
- \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()); } // ກິດຈະວັດປະຈຳທີ່ການຊອກຫາຊື່ຜູ້ນຳແລະມາດຕະລະນາວະ... // ການປ່ຽນພາສາຊື່ຜູ້ນຳແລະມາດຕະລະນາວະຫຼີກພາສາສະເພາະໃນ 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
ການໂຈມຕີຖານຂໍ້ມູນຂອງຂະບັນຊີ。ບົດສະຫຼຸບນີ້ສະແດງວ່າຫຼັງຈາກພວກເຮົາບໍ່ໃຊ້ຫົວຂໍ້ 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 ''=''
This means that any user can log in without entering a valid password.
Example 3
Correct practice to prevent database attacks:
<?php function check_input($value) { // Remove backslashes if (get_magic_quotes_gpc()) { $value = stripslashes($value); } // If not a number, add quotes 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()); } // Perform secure 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); ?>