Cómo limpiar correctamente la entrada del usuario en PHP contra XSS y SQL injection
¡Hola a todos! Soy un desarrollador PHP principiante y estoy escribiendo mi primer sitio web: un libro de visitas simple. Los usuarios dejan un nombre y un mensaje, que guardo en MySQL y luego muestro en la página.
Actualmente mi código se ve más o menos así:
```php
// Guardar en la base de datos
$name = $_POST['name'];
$message = $_POST['message'];
$sql = "INSERT INTO comments (name, message) VALUES ('$name', '$message')";
mysqli_query($conn, $sql);
// Mostrar en la página
echo "
$name: $message
"; ``` He notado que si ingreso algo como `` en el campo del nombre, al mostrar el mensaje aparece una ventana emergente. Y si ingreso `' OR '1'='1`, la consulta parece romperse. He leído que necesito "sanitizar" (sanitize) la entrada, pero no entiendo cómo hacerlo correctamente. En internet hay un montón de consejos: unos dicen que use `htmlspecialchars()`, otros `strip_tags()`, otros `mysqli_real_escape_string()`. ¿Y qué de esto es realmente necesario? ¿O necesito todo junto? Por favor, ayúdenme.