Vigilância sanitária em PHP

From XKCD

Do XKCD

Já parou para se perguntar o motivo pelo qual você sempre esquece de limpar os dados que os usuários digitam dentro da aplicação que você está desenvolvendo?

Limpar ou validar esses dados pode previnir e resolver dezenas de problemas. Principalmente, resolverá problemas de segurança.

Em PHP, temos várias funções nativas que ajudam a validar e sanitizar as variáveis. Uma boa função que eu raramente uso (mas vou começar a usar) é a filter_var.

A função filter_var permite uma infinidade de validações que precisamos usar em todos os projetos. Dentre elas: validar e-mail, url, números inteiros, números decimais, remover html, remover caracteres especiais e etc.

A seguir mostro usos práticos de validação:

filter_var($variavel,FILTER_VALIDATE_BOOLEAN)
Retorna TRUE se $variavel for um valor boleano ou FALSE se não for.

filter_var($variavel,FILTER_VALIDATE_EMAIL)
Retorna TRUE se $variavel for um endereço de e-mail ou FALSE se não for.

filter_var($variavel,FILTER_VALIDATE_FLOAT)
Retorna TRUE se $variavel for um número com ponto flutuante.

filter_var($variavel,FILTER_VALIDATE_INT)
Retorna TRUE se $variavel for um número inteiro.

filter_var($variavel,FILTER_VALIDATE_IP)
Retorna TRUE se $variavel for um número IP.

filter_var($variavel,FILTER_VALIDATE_URL)
Retorna TRUE se $variavel for uma URL válida (não necessariamente precisa existir).

Os códigos mostrados acima, simplesmente validam a informação passada. Eles não alteram nada na variável. Diferentemente do que mostrarei a seguir, que são funções de sanitização da variável:

filter_var($variavel,FILTER_SANITIZE_STRING)
Remove códigos HTML e caracteres inválidos

filter_var($variavel,FILTER_SANITIZE_ENCODED)
Codifica $variavel de acordo com a RFC 1738

filter_var($variavel,FILTER_SANITIZE_SPECIAL_CHARS)
Converte caracteres especiais de HTML como aspas, “e” comercial em códigos HTML padronizados.

filter_var($variavel,FILTER_SANITIZE_EMAIL)
Remove caracteres que um endereço de e-mail não pode conter. É interessante usar esta função após validar com o FILTER_VALIDATE_EMAIL.

filter_var($variavel,FILTER_SANITIZE_URL)
Remove caracters que não são permitidas em uma URL. É interessante usar esta função após validar com oFILTER_VALIDADE_URL.

filter_var($variavel,FILTER_SANITIZE_NUMBER_INT)
Remove pontos, vírgulas e outros caracteres, deixando somente os números. Ex.: 1a2b3c => 123

filter_var($variavel,FILTER_SANITIZE_NUMBER_FLOAT)
Remove pontos, vírgulas e outros caracteres, deixando somente os números.

Deixe um comentário