Your SlideShare is downloading. ×
0
Preto, Branco e as Sombras de Cinza
Preto, Branco e as Sombras de Cinza
Preto, Branco e as Sombras de Cinza
Preto, Branco e as Sombras de Cinza
Preto, Branco e as Sombras de Cinza
Preto, Branco e as Sombras de Cinza
Preto, Branco e as Sombras de Cinza
Preto, Branco e as Sombras de Cinza
Preto, Branco e as Sombras de Cinza
Preto, Branco e as Sombras de Cinza
Preto, Branco e as Sombras de Cinza
Preto, Branco e as Sombras de Cinza
Preto, Branco e as Sombras de Cinza
Preto, Branco e as Sombras de Cinza
Preto, Branco e as Sombras de Cinza
Preto, Branco e as Sombras de Cinza
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Preto, Branco e as Sombras de Cinza

1,944

Published on

Palestra apresentada na PHPSCConf 2009 sobre filtragem e validação de strings. Slides atualizados, adicionadas algumas informações e corrigidas outras. …

Palestra apresentada na PHPSCConf 2009 sobre filtragem e validação de strings. Slides atualizados, adicionadas algumas informações e corrigidas outras.
Apresentada na XII Semana da Computação da Uniderp Anhanguera, em Campo Grande (MS).

Published in: Technology, Art & Photos
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,944
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
42
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Preto, Branco e as Sombras de Cinza: Filtrando e Validando Strings v 2.0 – Setembro / 2009 Preto, Branco e as Sombras de Cinza Cinza: Filtrando e Validando Strings     Creative Commons Atribution-Share Alike by Er Galvão Abbott - www.galvao.eti.br
  • 2. Preto, Branco e as Sombras de Cinza: Filtrando e Validando Strings v 2.0 – Setembro / 2009 Objetivo: O objetivo desta palestra é demonstrar as diferentes abordagens ao se programar uma rotina de validação e filtragem de strings, debatendo vantagens e desvantagens de uma em relação à outra, demonstrando exemplos práticos. Serão abordados os seguintes tópicos:  O que é Validação e o que é Filtragem  Abordagens de validação e filtragem – o que são  Black List – O que é, vantagens e desvantagens  White List – O que é, vantagens e desvantagens  Nem Black, nem White – Quando nenhuma das duas abordagens resolve     Creative Commons Atribution-Share Alike by Er Galvão Abbott - www.galvao.eti.br
  • 3. Preto, Branco e as Sombras de Cinza: Filtrando e Validando Strings v 2.0 – Setembro / 2009 O que é Validação Validação é o processo pelo qual, através da análise de um dado chegamos à conclusão se ele é ou não válido, baseando-se em conceitos como contexto e tipo de informação. Por exemplo digamos que temos um campo que deve receber uma data. Ao se definir tipo de caracteres, máscara de formatação e ordem dos dados, podemos programar uma rotina que defina que um dado válido para este campo deva ser composto de dois números, uma barra, mais dois números, outra barra e mais quatro números. É possível ainda definirmos se, além de estar no formato considerado válido, se o dado em si é de fato válido de acordo com o contexto.     Creative Commons Atribution-Share Alike by Er Galvão Abbott - www.galvao.eti.br
  • 4. Preto, Branco e as Sombras de Cinza: Filtrando e Validando Strings v 2.0 – Setembro / 2009 O que é Filtragem Filtragem é o processo no qual se trata um dado de forma à se descartar caracteres considerados inválidos. A Filtragem pode ser realizada de duas formas: Através da procura de caracteres específicos ou como um sub-produto do processo de Validação, já que em ambos os casos caracteres indesejados são filtrados, ficando de fora da string final.     Creative Commons Atribution-Share Alike by Er Galvão Abbott - www.galvao.eti.br
  • 5. Preto, Branco e as Sombras de Cinza: Filtrando e Validando Strings v 2.0 – Setembro / 2009 Abordagens de Validação e Filtragem:  Black List – Focar a rotina em caracteres inválidos, que devem ser procurados e, ao      encontrá­los, estes sofrem algum processo específico, como o escape ou eliminação. + + Caracteres específicos podem ser encontrados e seguramente “inutilizados” – – É fácil ignorar caracteres por engano – – Exige rotinas “inversas” para exibição/re­utilização de dados  White List – Focar a rotina em caracteres válidos, onde qualquer caractere que não      se encaixe nesta lista seja automaticamente descartado. + + Através de regras específicas e restritivas nos asseguramos de que nada fora do que foi definido como válido passe pela rotina. + + É mais fácil definir uma lista de caracteres válidos. + + Não é necessário realizar uma rotina inversa no momento da exibição.     Creative Commons Atribution-Share Alike by Er Galvão Abbott - www.galvao.eti.br
  • 6. Preto, Branco e as Sombras de Cinza: Filtrando e Validando Strings v 2.0 – Setembro / 2009 Blacklist geralmente não dá certo  É comum esquecer caracteres potencialmente problemáticos, como por exemplo, quando tratamos de SQL Injection: Hífen – Quando duplicado é um comentário SQL Pipe – Quando duplicado é a concatenação SQL Porcentagem – Pode ser usado para construir cláusulas LIKE Iniciativas Blacklist geralmente não dão certo:  htmlspecialchars()  magic_quotes_gpc     Creative Commons Atribution-Share Alike by Er Galvão Abbott - www.galvao.eti.br
  • 7. Preto, Branco e as Sombras de Cinza: Filtrando e Validando Strings v 2.0 – Setembro / 2009 Abordagens Blacklist são desnecessariamente complexas  É muito mais difícil você fazer: if (preg_match('/['|”|­||]/', $foo))  Do que: if (!preg_match('/^[a­z]+$/', $foo)  Além disso Blacklist exige a percepção de representações “incomuns”: pesquisa.php?categoria=%27     Creative Commons Atribution-Share Alike by Er Galvão Abbott - www.galvao.eti.br
  • 8. Preto, Branco e as Sombras de Cinza: Filtrando e Validando Strings v 2.0 – Setembro / 2009 Abordagens de Validação e Filtragem: Exemplos de falha no uso de abordagens Black List:  Falha na detecção de caracteres e comandos sintáticos (p.ex: magic_quotes_gpc e       rotinas de escape para caracteres específicos como aspas): SQL Injection: SELECT foo FROM bar WHERE bar_id = 1 AND (SELECT COUNT(*) FROM baz) > 0 XSS:  <div id=”comentario”>     <script>window.onload=function() { eval(String.fromCharCode(100) +  String.fromCharCode(111) + String.fromCharCode(99) + String.fromCharCode(117) </div>     Creative Commons Atribution-Share Alike by Er Galvão Abbott - www.galvao.eti.br
  • 9. Preto, Branco e as Sombras de Cinza: Filtrando e Validando Strings v 2.0 – Setembro / 2009 Nem tudo é preto e branco: Existem casos em que nehuma das duas abordagens é suficiente por si só. São os casos onde não existe um formato simples de validação e caracteres especiais que são normalmente problemáticos são considerados “normais” na composição do dado. Tipicamente isto ocorre com entradas longas de texto, como “comentários” ou textos complexos ou que contém caracteres sintáticos, como textos que contém tags HTML.     Creative Commons Atribution-Share Alike by Er Galvão Abbott - www.galvao.eti.br
  • 10. Preto, Branco e as Sombras de Cinza: Filtrando e Validando Strings v 2.0 – Setembro / 2009 Validação + Filtragem <?php $tags_validas = array('<font>', '<br>'); $str = '<font>oi<br><img>'; if (preg_match_all('/<[a-z]+>/mi', $str, $results)) { foreach ($results as $res) { foreach($res as $r) { if (!in_array($r, $tags_validas)) { die('tag invalida: ' . $r . PHP_EOL); } } } } ?>     Creative Commons Atribution-Share Alike by Er Galvão Abbott - www.galvao.eti.br
  • 11. Preto, Branco e as Sombras de Cinza: Filtrando e Validando Strings v 2.0 – Setembro / 2009 Conheça as ferramentas disponíveis: Vale a pena conhecer as ferramentas de validação disponíveis no mercado: Expressões Regulares (PCRE) Frameworks como o Zend possuem módulos dedicados à Validação e Filtragem Funções Filter do PHP (disponíveis por default à partir da versão 5.2.0) - Provêem tanto funções de validação como de filtragem - Permitem trabalhar com dados simples e complexos como: - Endereços de e-mail - Endereços IP - URLs - Permitem que o próprio programador crie funções de callback     Creative Commons Atribution-Share Alike by Er Galvão Abbott - www.galvao.eti.br
  • 12. Preto, Branco e as Sombras de Cinza: Filtrando e Validando Strings v 2.0 – Setembro / 2009 Muito Obrigado! Programador, especializado em segurança de aplicações PHP, ministra cursos e presta consultoria na área. galvao@galvao.eti.br / www.galvao.eti.br Twitter: @galvao Palestras: www.slideshare.net/ergalvao Fundador e Líder do PUG PHPBR, que conta hoje com mais de 1.000 associados em todo o Brasil. galvao@phpbr.com.br / wiki.phpbr.com.br Diretor de Conteúdo da PHP Conference Brasil, o principal evento de PHP da América Latina. PHP Conference Brasil '09: 26, 27, 28 e 29 de Novembro galvao@phpconf.com.br / www.phpconf.com.br     Creative Commons Atribution-Share Alike by Er Galvão Abbott - www.galvao.eti.br

×