real_escape_string
В этой статье мы обсудим функцию mysqli_real_escape_string() в PHP, которая используется для экранирования специальных символов в строках, предназначенных для использования в SQL-запросах.
Введение в функцию mysqli_real_escape_string()
Эта встроенная функция PHP экранирует специальные символы в строках, предназначенных для SQL-запросов. Она помогает предотвратить атаки SQL-инъекций, которые возникают, когда злоумышленники внедряют вредоносный SQL-код в запросы, выполняемые базой данных.
Как использовать функцию mysqli_real_escape_string()
Использование функции mysqli_real_escape_string() довольно просто. Вот пример:
<?php
$con = mysqli_connect('localhost', 'username', 'password', 'database');
if (!$con) {
exit('Could not connect: ' . mysqli_error($con));
}
// Set charset to prevent multi-byte character vulnerabilities
mysqli_set_charset($con, 'utf8mb4');
$name = "John O'Reilly";
$name = mysqli_real_escape_string($con, $name);
$sql = "INSERT INTO customers (name) VALUES ('$name')";
if (!mysqli_query($con, $sql)) {
exit('Error: ' . mysqli_error($con));
}
echo '1 record added';
mysqli_close($con);
?>В этом примере мы сначала устанавливаем соединение с базой данных MySQL с помощью mysqli_connect(). Затем мы определяем переменную $name, содержащую одинарную кавычку. Вызов mysqli_real_escape_string() экранирует эту кавычку, гарантируя, что SQL-запрос выполнится без ошибок синтаксиса. Мы формируем запрос INSERT к таблице customers, выполняем его с помощью mysqli_query() и выводим сообщение об успехе.
Примечание: Всегда устанавливайте кодировку соединения (например, mysqli_set_charset($con, 'utf8mb4')) перед экранированием, чтобы предотвратить уязвимости, связанные с многобайтовыми символами. Хотя эта функция работает, современная разработка на PHP настоятельно рекомендует использовать подготовленные выражения с параметризованными запросами для повышения безопасности.
Заключение
Функция mysqli_real_escape_string() остается практичным инструментом для экранирования специальных символов в SQL-запросах. Правильное экранирование пользовательского ввода помогает обеспечить безопасность вашего приложения и защитить данные.
Практика
Что делает функция PHP mysql_real_escape_string?