Это выражение уязвимо к SQL‑инъекции: переменная ( \$user ) напрямую подставляется в строку запроса. Пример атаки: если ( \$user = "' OR '1'='1'" ), итоговый SQL станет SELECT * FROM users WHERE name = '' OR '1'='1' и вернёт все строки.
Как исправить (рекомендации):
Использовать подготовленные выражения (prepared statements) с параметризацией — самый надёжный способ.
Пример на PDO: $stmt = $pdo->prepare("SELECT * FROM users WHERE name = :name"); $stmt->execute([':name' => user]);</li><li>Примернаmysqli:user]);</li><li>Пример на mysqli: user]);</li><li>Примернаmysqli:stmt = $mysqli->prepare("SELECT * FROM users WHERE name = ?"); $stmt->bind_param("s", user);user); user);stmt->execute();
Валидация/фильтрация входа: если ожидается определённый формат (например, только буквы и цифры), применяйте проверку через регулярные выражения или whitelist.
При использовании LIKE — экранируйте спецсимволы % и _ и тоже используйте параметризацию.
Избегайте простого экранирования функций вроде addslashes(); приоритет — подготовленные выражения.
Коротко: замените конкатенацию переменной на подготовленный запрос с параметром и добавьте валидацию входа.
Это выражение уязвимо к SQL‑инъекции: переменная ( \$user ) напрямую подставляется в строку запроса. Пример атаки: если ( \$user = "' OR '1'='1'" ), итоговый SQL станет
SELECT * FROM users WHERE name = '' OR '1'='1'
и вернёт все строки.
Как исправить (рекомендации):
Использовать подготовленные выражения (prepared statements) с параметризацией — самый надёжный способ.
Пример на PDO:$stmt = $pdo->prepare("SELECT * FROM users WHERE name = :name");
$stmt->execute([':name' => user]);</li><li>Примернаmysqli:user]);</li><li>Пример на mysqli:
user]);</li><li>Примернаmysqli:stmt = $mysqli->prepare("SELECT * FROM users WHERE name = ?");
$stmt->bind_param("s", user);user);
user);stmt->execute();
Валидация/фильтрация входа: если ожидается определённый формат (например, только буквы и цифры), применяйте проверку через регулярные выражения или whitelist.
При использовании LIKE — экранируйте спецсимволы % и _ и тоже используйте параметризацию.
Избегайте простого экранирования функций вроде addslashes(); приоритет — подготовленные выражения.
Коротко: замените конкатенацию переменной на подготовленный запрос с параметром и добавьте валидацию входа.