Avatar ·

Como limpar corretamente a entrada do usuário em PHP contra XSS e injeções SQL?

Olá a todos! Sou um desenvolvedor PHP iniciante e estou escrevendo meu primeiro site — um simples livro de visitas. Os usuários deixam nome e mensagem, que eu salvo no MySQL e depois exibo na página. Atualmente, meu código é mais ou menos assim: ```php // Salvando no banco de dados $name = $_POST['name']; $message = $_POST['message']; $sql = "INSERT INTO comments (name, message) VALUES ('$name', '$message')"; mysqli_query($conn, $sql); // Exibindo na página echo "

$name: $message

"; ``` Percebi que se eu inserir no campo nome algo como ``, ao exibir a mensagem aparece uma janela pop-up. E se eu inserir `' OR '1'='1`, a query parece quebrar. Li que é preciso "sanitizar" (sanitize) a entrada, mas não entendo como fazer isso corretamente. Na internet há montes de conselhos — uns dizem para usar `htmlspecialchars()`, outros `strip_tags()`, outros `mysqli_real_escape_string()`. Mas o que realmente é necessário? Ou preciso usar tudo junto? Por favor, me ajudem.