
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.