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!

sanitizar inputs com PHP capa

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 “&lt;script&gt;“, 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.

Subscribe
Notify of
guest

0 Comentários
Inline Feedbacks
View all comments