Уязвимость: присваивание значения напрямую из пользовательского ввода ($_POST['user']) без проверки и очистки. Это делает код уязвимым к инъекциям (XSS при выводе в HTML, SQL‑инъекция при подстановке в запросы, командная инъекция при передаче в shell, инклюзии файлов и т.п.).
Примеры и исправления:
XSS: если потом делают echo $user;, злоумышленник может отправить <script>…</script>. Решение: при выводе в HTML использовать htmlspecialchars($user, ENT_QUOTES, 'UTF-8').SQL‑инъекция: при "... WHERE name = '$user'" применяйте подготовленные выражения (PDO/MySQLi). Пример PDO: \$stmt = \$pdo->prepare("SELECT * FROM users WHERE name = ?");
\$stmt->execute([\$user]);Командная инъекция: при system("cmd " . $user) — используйте escapeshellarg() или избегайте вызовов shell.Включение файлов: при include($user . '.php') — применяйте белый список допустимых имён или basename() и проверку на разрешённые пути.Валидация/очистка: если ожидается определённый формат (email, число и т.д.), валидируйте: filter_var($user, FILTER_VALIDATE_EMAIL) или приведение типа (int)$user.
Рекомендация: никогда не доверяйте данным из $_POST; валидируйте по ожидаемому типу/формату, экранируйте при выводе и используйте параметризованные запросы для работы с БД.
Уязвимость: присваивание значения напрямую из пользовательского ввода ($_POST['user']) без проверки и очистки. Это делает код уязвимым к инъекциям (XSS при выводе в HTML, SQL‑инъекция при подстановке в запросы, командная инъекция при передаче в shell, инклюзии файлов и т.п.).
Примеры и исправления:
XSS: если потом делают echo $user;, злоумышленник может отправить <script>…</script>. Решение: при выводе в HTML использовать htmlspecialchars($user, ENT_QUOTES, 'UTF-8').SQL‑инъекция: при "... WHERE name = '$user'" применяйте подготовленные выражения (PDO/MySQLi). Пример PDO:\$stmt = \$pdo->prepare("SELECT * FROM users WHERE name = ?");
\$stmt->execute([\$user]);Командная инъекция: при system("cmd " . $user) — используйте escapeshellarg() или избегайте вызовов shell.Включение файлов: при include($user . '.php') — применяйте белый список допустимых имён или basename() и проверку на разрешённые пути.Валидация/очистка: если ожидается определённый формат (email, число и т.д.), валидируйте: filter_var($user, FILTER_VALIDATE_EMAIL) или приведение типа (int)$user.
Рекомендация: никогда не доверяйте данным из $_POST; валидируйте по ожидаемому типу/формату, экранируйте при выводе и используйте параметризованные запросы для работы с БД.