Ir ao conteúdo
  • Cadastre-se

Sanitize PHP


Posts recomendados

Boa noite a todos.

 

Estou fazendo um curso de PHP OO pela Udemy (inglês) e o professor comentou em Sanatize, pesquisei no google a respeito e achei várias explicações em inglês, mas não consegui entender direito. Pelo que consegui absorver seria uma forma de limitar a entrada de alguns caracteres no banco de dados, dependendo do tipo de informação, não deixando passar caracteres especiais, tags HTML, etc.

 

Minha dúvida é se devo fazer o Sanitize de todos os campos, e isso é somente para evitar que o usuário entre com caracteres não esperados ou tem relação com a segurança também?

Qual a diferença entre Sanitize e Validar?

 

Exemplo como o professor está usando:

$post = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);

if ($post['submit']) {
	$title = $post['title'];
	$body  = $post['body'];

...

 

Obrigado.

Link para o comentário
Compartilhar em outros sites

  • Moderador

@Charlie Fox Olá,

 

Seu professor passou mais um método de filtrar os dados para que não haja possibilidade de SQL injection.

Basicamente o Filter_satinize_string faz com que todos os caracteres especiais como #$/|\[] e etc sejam retirados da variável.

 

é só mais uma forma de limpar as variáveis.

Manual do php sanitize

 

Você pode usar desta forma ou só em campos que julgar necessário. Por exemplo em campos de e-mails, selects com options, checkboxes, radio buttons não são necessários!

 

preocupe-se mais com os campos de input do tipo text , password e do campo textarea. use o sanitize neles.:thumbsup:

 

Mas lembre-se que existem  outras formas também. 

 

Veja este artigo sobre filtrar e validar dados

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@DiF Entendi, obrigado.

Estou fazendo uns testes aqui e usei o FILTER_SANITIZE_STRING em um textarea, e vi que ele gravou no banco de dados os acentos usando uns códigos estranhos, e caracteres especiais também. Achei ótimo de que ele retirou as tags HTML, mas ficou estranho essas informações do textarea. Como faço pra converter esses códigos de uma forma que o usuário consiga entender quando imprimir pra ele?

 

Vi um comentário falando que sempre deve usar o Sanitize com Validação(avisar o usuário), porque você não pode simplesmente gravar informação diferente do que o usuário digitou. Então o Sanitize ficaria somente como último caso? Caso o usuário seja avisado na validação que aquele caractere não pode, e mesmo assim ele consiga coloca-lo, então a função retire o mesmo?

Link para o comentário
Compartilhar em outros sites

  • Moderador

@Charlie Fox Sim, realmente o sanitize não retira os caracteres especiais( eu pensei que sim, mas foi equivoco.)

O que ele retira é tags html.

 

Para caracteres especiais pode-se usar a expressão regular para filtrar por exemplo

preg_replace('/[^a-zA-Z0-9_ %\[\]\.\(\)%&-]/s', '', $variável)

Isso faz com que não seja aceito os caracteres especiais, mesmo que o usuário coloque, a saída dele será sem eles.

 

Mas é bom sim, que avise o usuário que não pode determinado caracteres.. nesse caso, é mais válido fazer isso em javascript para ser mais rápido na analise, porque se depender do php, você vai precisar fazer a requisição e aí testar o dado passado..  por javascript o teste é direto na máquina do usuário..

 

você pode usar o jQuery e expressão regular!  podes usar plugins jquery de validações... e etc... 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...