Neste artigo você vai aprender a como sanitizar inputs com PHP, através de um técnica simples e muito eficiente para os seus projetos!

Fala programador(a), beleza? Bora aprender mais sobre PHP!
Introdução
No desenvolvimento web, uma das maiores ameaças à segurança é a injeção de código, que ocorre quando os usuários mal-intencionados conseguem executar código malicioso no seu site através de campos de entrada.
Para proteger seu site e seus usuários, é essencial “sanitizar” ou limpar os dados de entrada para garantir que eles sejam seguros antes de usá-los em seu código.
Neste artigo, vamos abordar como sanitizar entradas com PHP.
O Que é a Sanitização de Inputs? e como sanitizar inputs com PHP
A sanitização de inputs é o processo de limpar e validar os dados que seu aplicativo recebe.
Isso é feito para evitar que códigos mal-intencionados sejam inseridos em seu aplicativo, evitando assim vulnerabilidades comuns de segurança, como ataques de injeção de SQL e scripts cross-site (XSS).
Sanitizando Inputs com PHP
PHP fornece um número de funções para a sanitização de inputs, e vamos cobrir algumas das mais comuns neste artigo.
Sanitizando Strings
A função filter_input() é uma das funções mais usadas para sanitizar strings em PHP. A função aceita três parâmetros – o tipo de input a ser sanificado, o nome do input e o filtro a ser aplicado.
$name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);
Neste exemplo, a função filter_input() é usada para sanitizar um campo de entrada chamado ‘name’.
O filtro FILTER_SANITIZE_STRING remove tags e codifica caracteres especiais, o que é ideal para a sanitização de strings.
Sanitizando Números
Para sanitizar entradas numéricas, você pode usar FILTER_SANITIZE_NUMBER_INT ou FILTER_SANITIZE_NUMBER_FLOAT, dependendo se o número é um inteiro ou um número de ponto flutuante.
$age = filter_input(INPUT_POST, 'age', FILTER_SANITIZE_NUMBER_INT); $price = filter_input(INPUT_POST, 'price', FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
Sanitizando URLs e Emails
PHP também fornece filtros específicos para sanitizar URLs e endereços de e-mail.
$url = filter_input(INPUT_POST, 'url', FILTER_SANITIZE_URL); $email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);
Validação vs Sanitização
É importante observar a diferença entre sanitização e validação. A sanitização trata da limpeza dos dados de entrada – removendo caracteres indesejados ou potencialmente prejudiciais.
A validação, por outro lado, verifica se os dados de entrada estão corretos, úteis e fazem sentido.
Por exemplo, um campo de entrada para um endereço de e-mail deve ser primeiro sanificado para remover caracteres potencialmente perigosos, e então validado para garantir que seja um endereço de e-mail válido.
Entendendo Injeção de Código
Para compreender completamente a importância da sanitização de entradas, é crucial entender o que é a injeção de código
. A injeção de código é uma técnica usada por hackers para manipular seu código, inserindo seus próprios comandos. Isso pode levar a vários problemas, incluindo a exposição de dados sensíveis, como informações de usuário e senhas, a manipulação de seu banco de dados, ou até mesmo o comprometimento de todo o seu sistema.
A forma mais comum de injeção de código é a Injeção de SQL.
No entanto, outros tipos, como a Injeção de Código HTML e a Injeção de Código PHP, também são comuns.
Em todos esses casos, a sanitização de entradas desempenha um papel crucial na proteção contra esses ataques.
Um exemplo clássico de um código PHP que pode ser vulnerável a injeção de código é aquele que recebe entradas do usuário e as usa diretamente em uma consulta SQL sem nenhuma sanitização ou escaping.
Veja um exemplo a seguir:
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";
// Criando uma conexão
$conn = new mysqli($servername, $username, $password, $dbname);
// Checando a conexão
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// Recebendo o input do usuário diretamente
$id = $_GET['id'];
// Usando o input do usuário diretamente na consulta SQL
$sql = "SELECT * FROM users WHERE id = $id";
$result = $conn->query($sql);
// Restante do código ...
?>
Nesse exemplo, um usuário mal-intencionado pode alterar o valor da variável $_GET['id'] na URL para algo como 1 OR 1=1, e a consulta SQL se torna "SELECT * FROM users WHERE id = 1 OR 1=1". Isso retornará todos os usuários, pois 1=1 é sempre verdadeiro.
Este é um exemplo simples de Injeção de SQL, um dos tipos de ataques de injeção de código.
Sanitizar os inputs do usuário e usar declarações preparadas são maneiras de prevenir esse tipo de ataque.
Sanitização Vs. Escaping
Outro conceito que vale a pena discutir é a diferença entre sanitização e escaping.
Embora ambos sejam usados para garantir que os dados de entrada sejam seguros, eles têm propósitos ligeiramente diferentes.
A sanitização, como mencionado anteriormente, trata de limpar os dados de entrada, removendo ou modificando quaisquer caracteres que possam ser problemáticos.
Por outro lado, o escaping envolve adicionar caracteres de escape aos dados de entrada para garantir que eles sejam tratados como dados, e não como código.
Na prática, isso significa que, enquanto a sanitização pode remover certos caracteres ou sequências de caracteres dos dados de entrada, o escaping fará com que eles sejam tratados literalmente.
Por exemplo, se um usuário inserir a string “<script>“, a sanitização pode removê-la completamente, enquanto o escaping pode convertê-la em “<script>“, que é seguro para ser exibido em um navegador.
Em muitos casos, você precisará usar uma combinação de sanitização e escaping para garantir que seus dados de entrada sejam totalmente seguros.
Recursos Adicionais
Existem muitos outros recursos e técnicas disponíveis para ajudar a proteger seu site ou aplicativo contra ataques.
Além das funções de sanitização e validação do PHP, existem várias bibliotecas e frameworks disponíveis que podem oferecer recursos de segurança mais robustos.
Além disso, há uma ampla gama de recursos online disponíveis para ajudá-lo a entender melhor a segurança da web e a proteger seu site ou aplicativo.
Sites como OWASP (Open Web Application Security Project) oferecem uma grande quantidade de informações e orientações sobre segurança da web, incluindo listas de vulnerabilidades de segurança comuns e como proteger-se contra elas.
Quer aprender mais sobre programação? Conheça nosso canal no YouTube:
Conclusão
Chegamos ao fim do artigo sobre como sanitizar inputs com PHP!
Sanitizar entradas é uma prática de segurança essencial para qualquer aplicativo web.
É importante lembrar que enquanto a sanitização pode proteger seu aplicativo de muitos tipos de ataques, não é uma solução de segurança completa por si só.
Outras práticas de segurança, como a utilização de conexões seguras, a limitação de tentativas de login e a validação rigorosa dos dados, também são necessárias para manter seu aplicativo seguro.
No entanto, o uso consistente da sanitização de entradas como parte de um plano de segurança mais amplo pode ajudar a proteger você, seus usuários e seus dados contra ameaças.
Lembre-se, a segurança do seu aplicativo deve ser uma consideração em cada etapa do desenvolvimento, não apenas uma reflexão tardia.
Está buscando em evoluir como Programador? Confira o nossos cursos de programação.