Cómo limpiar correctamente la entrada del usuario en PHP: protección contra XSS e inyecciones SQL
¡Hola a todos! Soy un desarrollador PHP principiante y me he encontrado con un problema de seguridad. En mi sitio web hay un formulario de registro y comentarios. Recibo datos de los usuarios y los inserto directamente en la base de datos y los muestro en la página. Recientemente noté que alguien ingresó el siguiente código en el campo del nombre: ``, y al mostrarlo en la página, este script se ejecutó. También he oído hablar de las inyecciones SQL, pero no entiendo completamente cómo protegerme contra ellas.
Aquí hay un ejemplo de mi código:
```php
// Obtención de datos del formulario
$name = $_POST['name'];
$email = $_POST['email'];
// Guardar en la base de datos (MySQL)
$query = "INSERT INTO users (name, email) VALUES ('$name', '$email')";
mysqli_query($connection, $query);
// Mostrar en la página
echo "¡Hola, $name!";
```
¿Cómo limpiar los datos correctamente? ¿Debo usar `htmlspecialchars()` o `strip_tags()`? ¿Y para la base de datos, `mysqli_real_escape_string()`? ¿O hay enfoques más modernos? Por favor, indíquenme las mejores prácticas para PHP 8+.