Como filtrar dados de um formulário antes de inserir no MySQL com PHP?
Ao receber dados de um formulário HTML, é essencial validar e sanitizar as entradas para evitar erros e ataques como SQL Injection e XSS. Podemos utilizar funções nativas do PHP para garantir a integridade e segurança dos dados.
Criando um Formulário HTML Seguro
<form action="processa.php" method="post">
<label>Nome:</label>
<input type="text" name="nome" required>
<label>Email:</label>
<input type="email" name="email" required>
<button type="submit">Enviar</button>
</form>
Filtrando e Validando Dados no PHP Antes de Inserir no MySQL
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$nome = filter_input(INPUT_POST, 'nome', FILTER_SANITIZE_STRING);
$email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);
if ($email === false) {
die("E-mail inválido!");
}
$conexao = new PDO("mysql:host=localhost;dbname=meu_banco", "usuario", "senha");
$sql = "INSERT INTO usuarios (nome, email) VALUES (:nome, :email)";
$stmt = $conexao->prepare($sql);
$stmt->bindParam(':nome', $nome);
$stmt->bindParam(':email', $email);
$stmt->execute();
echo "Dados inseridos com sucesso!";
}
?>
Explicação do Código
filter_input()
sanitiza os dados antes do processamento.FILTER_SANITIZE_STRING
remove caracteres especiais para evitar XSS.FILTER_VALIDATE_EMAIL
garante que o e-mail seja válido.PDO::prepare()
evita SQL Injection.
Por que é importante filtrar dados do formulário antes de inserir no MySQL?
Filtrar e validar dados de formulários é uma prática essencial em qualquer aplicação web. A falta desse cuidado pode resultar em falhas de segurança, como SQL Injection e XSS, comprometendo a integridade dos dados e a privacidade dos usuários. Além de validar campos obrigatórios, é importante normalizar formatos e tratar corretamente os inputs do usuário.
Algumas aplicações:
- Evitar ataques de SQL Injection e XSS
- Garantir que apenas dados válidos sejam armazenados
- Evitar erros de formatação no banco de dados
- Melhorar a experiência do usuário ao prevenir entradas inválidas
Dicas para quem está começando
- Use
filter_input()
para sanitizar os dados antes de inseri-los no banco. - Valide campos obrigatórios antes de processar os dados.
- Evite inserir valores diretamente nas queries SQL, prefira prepared statements.
- Se necessário, utilize expressões regulares para validar formatos específicos.
- Teste com diferentes tipos de inputs para garantir que a sanitização funciona corretamente.
Contribuições de Daniel Moreira