Avatar ·

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.