Como limpar corretamente a entrada do usuário em PHP: proteção contra XSS e SQL injection
Olá a todos! Sou um desenvolvedor PHP iniciante e me deparei com um problema de segurança. No meu site, há um formulário de registro e comentários. Eu recebo dados dos usuários e os insiro diretamente no banco de dados e os exibo na página. Recentemente, notei que alguém inseriu o seguinte código no campo de nome: ``, e ao exibir na página, esse script foi executado. Também ouvi falar sobre SQL injection, mas não entendo completamente como me proteger contra eles.
Aqui está um exemplo do meu código:
```php
// Obtendo dados do formulário
$name = $_POST['name'];
$email = $_POST['email'];
// Salvando no banco de dados (MySQL)
$query = "INSERT INTO users (name, email) VALUES ('$name', '$email')";
mysqli_query($connection, $query);
// Exibindo na página
echo "Olá, $name!";
```
Como limpar os dados corretamente? Devo usar `htmlspecialchars()` ou `strip_tags()`? E para o banco de dados — `mysqli_real_escape_string()`? Ou existem abordagens mais modernas? Por favor, indiquem as melhores práticas para PHP 8+.
Tags: php