Projeto: Detectando "Expressões Perigosas" em Python

Default avatar

Lara da Teachy


Programação em Python

Original Teachy

Expressões Regulares em Python

Contextualização

As expressões regulares são uma linguagem de marcação utilizada para identificar padrões em textos. Esta ferramenta é de vital importância em diversas áreas de atuação, incluindo ciência de dados, web scraping, bioinformática, dentre outras.

Em particular, expressões regulares são extremamente úteis em Python, una linguagem de programação utilizada frequentemente para manipulação de dados e desenvolvimento web. Em Python, a biblioteca re oferece ferramentas poderosas para trabalhar com expressões regulares, que vão desde as funções mais básicas, como encontrar todas as ocorrências de um padrão, até as mais complexas, como fazer substituição baseada em padrões, dividir uma string em substrings e muito mais.

Introdução

Para dominar o uso de expressões regulares em Python, é preciso entender uma série de detalhes e nuances.

Primeiramente, é primordial conhecer a sintaxe básica das expressões regulares. Essa sintaxe inclui diversos caracteres especiais, cada um com um significado particular que influencia o comportamento da expressão regular. Alguns dos caracteres mais importantes incluem o ponto (.), que significa "qualquer caractere", o asterisco (*), que significa "zero ou mais ocorrências do caractere anterior", as chaves ({}), que permitem especificar a quantidade de ocorrências de um caractere, e muitos outros.

Além da sintaxe, também se precisa entender os principais métodos fornecidos pela biblioteca re. Estes incluem re.search(), utilizado para buscar o primeiro padrão que atenda a expressão regular em uma string; re.findall(), que retorna todas as ocorrências de um padrão em uma string; re.split(), que divide uma string em várias strings utilizando um dado padrão como separador, entre outros.

Também é importante dominar os conceitos de grupos e capturas, que permitem agrupar partes de uma expressão regular e depois fazer referência a elas. Além disso, as flags de expressões regulares também são um tópico relevante, visto que elas permitem alterar o comportamento das expressões regulares de formas muito úteis.

Materiais extras

Para se aprofundar no assunto, recomendamos os seguintes materiais:

  • O capítulo sobre expressões regulares do livro [Automatize Tarefas Maçantes com Python]
  • O tutorial de expressões regulares da [Documentação Oficial de Python]
  • O tutorial de [Python Regex] do W3Schools
  • O curso [Python Regex] completo no Real Python

Lembrando que é possível praticar a escrita de expressões regulares em ferramentas interativas, como o [Pythex] uma ferramenta online que permite testar expressões regulares em Python.

Esperamos que esse contexto te inspire a explorar esse assunto tão vasto quanto interessante. E não se esqueça: a prática faz a perfeição!

Atividade Prática

Detectando "Expressões Perigosas" em Python

Objetivo do projeto

O objetivo dessa atividade é criar um validador de código Python que identifica o uso de "expressões perigosas" em Python. Estas podem ser a execução de código arbitrário através de funções como exec() e eval(), ou a utilização de módulos sensíveis à segurança como os e subprocess.

A atividade permitirá a prática e aprofundamente o entendimento das expressões regulares e seu uso com Python.

Materiais necessários

  • Python 3.8 ou superior
  • Um editor de texto ou IDE preferido
  • Acesso à internet para consulta de documentação e tutoriais

Descrição detalhada do projeto

Os grupos devem desenvolver um script em Python que realiza a seguinte tarefa: analisa um arquivo de código Python (.py) e detecta o uso de "expressões perigosas". As expressões perigosas são definidas como expressões que podem levar a problemas de segurança se usadas incorretamente, como a execução de código arbitrário ou acesso a funções do sistema operacional. Estas expressões podem incluir, mas não estão limitadas a, as seguintes peças de código:

  • Funções como eval(), exec()
  • Importação e uso do módulo os ou subprocess

Passo a passo detalhado para a realização da atividade

  1. Iniciar o projeto determinando as "expressões perigosas" que o validador deve ser capaz de identificar. Esta lista pode incluir, mas não está limitada a, as expressões mencionadas acima.

  2. Escrever uma especificação das expressões regulares que correspondem a cada uma das "expressões perigosas".

  3. Aplicar as expressões regulares à análise de um arquivo de código Python. A análise deve ler o arquivo, linha por linha, e verificar se cada linha contém alguma das "expressões perigosas".

  4. Se a expressão perigosa for encontrada, o programa deve imprimir um alerta na tela, indicando a linha que contém a expressão e qual expressão perigosa foi encontrada.

  5. Após o programa estar funcionando corretamente, cada membro do grupo deve escolher um projeto Python open-source diferente (pode ser um pequeno script que você encontre no GitHub, por exemplo), e rodar o seu validador nele.

  6. Documentar descobertas e observações feitas ao longo do projeto.

Entregas do Projeto

Após a conclusão do projeto, cada grupo deve entregar:

  1. O código-fonte do validador, documentado e comentado.
  2. Um relatório no formato de um documento escrito contendo:
    • Introdução: Contextualizar o tema, explicar a relevância de analisar códigos Python e o objetivo da atividade.
    • Desenvolvimento: Explicar a teoria das regex, discorrer sobre a especificação das expressões regulares que correspondem às "expressões perigosas" e comentar a aplicação prática do analisador.
    • Resultados: Discutir alguns dos resultados obtidos ao rodar o validador em projetos Python abertos. Quais foram os principais alertas identificados? Houve algum falso positivo?
    • Conclusão: Quais foram os principais aprendizados da atividade? O que você faria diferente se fosse refazer a atividade?
    • Bibliografia: Indicar as fontes de consulta utilizadas durante o projeto.

Os grupos podem ser compostos por 3 a 5 alunos. O tempo estimado para a execução do projeto é de 5 a 10 horas por aluno, sendo o tempo de entrega de um mês.


Iara Tip

Precisa de materiais para apresentar o tema do projeto em sala?

Na plataforma da Teachy você encontra uma série de materiais prontos sobre esse tema! Jogos, slides, atividades, vídeos, planos de aula e muito mais...

Community img

Faça parte de uma comunidade de professores direto no seu WhatsApp

Conecte-se com outros professores, receba e compartilhe materiais, dicas, treinamentos, e muito mais!