Cadastre-se Revistas DevMedia Cursos
 

Space de Gustavo Dutra
Busca Autor


Últimas 20 atualizações de Gustavo Dutra

Artigo - Expressões regulares em PHP

A OWASP Foundation - Open Web Application Security Project - é uma fundação sem fins lucrativos focada na segurança de aplicações. Ela possui um projeto, de nome OWASP, dedicado à procura e resolução de problemas que levam à construção de softwares inseguros. Todo material disponibilizado pela instituição - artigos, metodologias, trechos de código, documentação, ferramentas, entre outros - pode ser acessado gratuitamente e possui licença open-source.

Esta fundação é reconhecida a nível mundial e tem como membros empresas como Amazon, Microsoft, Oracle, HP e Adobe. Também possui faculdades vinculadas como a UCLA, Berkeley e a Universidade do Texas.

A fundação conta também com uma série de princípios que devem ser tomados a fim de cumprir o objetivo estabelecido por ela. Um destes princípios é "Don't trust user input", que poderia ser traduzido para "Não confie nos dados enviados pelo usuário".

Este princípio é bem sólido e difundido, embora alguns aplicativos ou não o implementam ou não dão o devido valor. Dizemos isso por que podemos observar muitos casos por aí de falhas de segurança devido a falta de validação de dados. Para confirmar, basta verificar os 10 riscos eleitos pelo projeto OWASP Top 10 (ver seção links), que estabelece, ao longo de um ano, as dez falhas de segurança que mais ocorreram.

Nas duas primeiras posições de falhas mais presentes em aplicações, na versão de 2010, estão "Injection" e "Cross-Site Scripting (XSS)". Estes dois tipos de falhas são exploradas, na maioria das vezes, justamente por negligência do princípio que foi citado acima (“Não confie nos dados enviados pelo usuário”).

Uma ótima forma de prevenir este tipo falha é utilizando expressões regulares para verificar a consistência dos dados. Por consistência leia-se, o formato que um determinado dado deve ter. Por exemplo: campos de datas não deveriam permitir aspas ou espaços em branco.

Para este tipo de ação - a verificação da integridade dos dados e seu formato -, expressões regulares são muito úteis e fáceis de serem implementadas. Neste contexto, veremos a partir de agora neste artigo uma pequena introdução sobre o assunto, junto de alguns exemplos. Ao final serão sugeridas ferramentas para teste e análise das expressões.

Arquitetura da solução

As expressões regulares são geralmente utilizadas para validação de dados, buscas e substituições de strings, pois elas provêm uma forma simples de casar padrões de caracteres, sejam os padrões quais forem.

De fato, as expressões regulares aparecem frequentemente em quatro contextos diferentes: casamento de padrões de texto, busca, substituição e quebra ou separação de texto.

Esta facilidade está presente na maioria das linguagens de programação como PHP, Perl, Ruby, Java, Tcl, Python, JavaScript, embora algumas das linguagens não tenham suporte nativo e necessitem de bibliotecas, como é o caso da biblioteca "re" do Python. Elas também estão presentes em programas comuns em sistemas UNIX como o "sed" e o "grep".

Usuários de UNIX podem ter notado a diferença entre as expressões regulares utilizadas pelas ferramentas GNU, tais como o sed, grep, vi, ed e awk para as expressões regulares da linguagem Perl, por exemplo. O fato é que existem vários motores e bibliotecas para interpretação das expressões regulares, e isso traz diferenças ao definirmos expressões regulares.

A implementação POSIX básica é a mais tradicional e segue alguns padrões. Ela é a mais utilizada nas ferramentas do UNIX. Nesta implementação, os metacaracteres - como parênteses, chaves, sinal de soma e interrogação - devem ser “escapados” para que sejam interpretados como metacaracteres de verdade - ou seja, não sejam interpretados literalmente.

Por outro lado, na implementação POSIX estendida é necessário o escape para que seja interpretado o significado literal do metacaractere, ou seja, para que asteriscos casem com asteriscos do texto. Isto se deve a questões de compatibilidade ao Simple Regular Expression, que precedeu o POSIX.

Além das implementações POSIX, há a implementação que se tornou conhecida por PCRE, cuja sigla representa Perl Compatible Regular Expression. É uma implementação mais poderosa e completa que a POSIX, pois implementa facilidades como padrões recursivos e grupos com captura por nome.

Os metacaracteres

Para que os padrões possam ser casados dentro do texto, são utilizados metacaracteres. Na Tabela 1 há uma lista com alguns dos metacaracteres mais utilizados.

Regex Casa com Descrição
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
06/07/2012 17:26:00





 
Foto não disponivel

Descrição não disponivel

Arquivo de atualizações
 2012

Estatísticas do Autor:
Número de posts: 1
Características dos posts deste autor:
Utilidade:
1 0
 
DevMedia Group - Tel: (21) 3382-5038 - www.devmedia.com.br
Todos os Direitos Reservados a DevMedia Group