◇ OpenCyber Academy
Tecnólogo · Capítulo 3 · Português

Capítulo 3 — Fundamentos de programação

Ensino gratuito e aberto para quem deseja proteger pessoas e tecnologias. Não é preciso criar uma conta para estudar ou consultar as respostas.

Capítulo 3 — Fundamentos de programação

Mapa da aula

Aula 03 publicada. Mapa, exemplo, EX007.

flowchart TD
  N0["3.1 Scripts seguros"]
  N1["3.2 Logs"]
  N2["3.3 Validação da entrada"]
  N3["3.4 Geração de dados de teste"]
  N0 --> N1 --> N2 --> N3
  N3 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX007"]

Desenho lógico

flowchart LR
  N0["3.1 Scripts seguros"]
  N1["3.2 Logs"]
  N2["3.3 Validação da entrada"]
  N3["3.4 Geração de dados de teste"]
  N0 --> N1 --> N2 --> N3 --> Q["EX007"]
[3.1 Scripts seguros]
    |
    v
[3.2 Logs]
    |
    v
[3.3 Validação da entrada]
    |
    v
[3.4 Geração de dados de teste]
    |
    v
[Exemplo resolvido] --> [Exercício EX007]

Objetivos de aprendizagem

Você vai (1) escrever scripts que tratem os dados dos alunos com segurança; (2) evitar imprimir ou registrar em log dados pessoais; (3) usar dados de teste.

3.1 Scripts seguros

Aisha escreve scripts em Python para contar a presença nas aulas. O Sr. Reilly exige dados sintéticos de alunos em todos os exercícios. O script lê um arquivo de reservas, conta a presença por aula e imprime os totais. Ela evita imprimir os nomes dos alunos, que não são necessários para os totais. Aprende que os scripts costumam ser copiados e reaproveitados, então os hábitos formados em scripts simples se espalham para os sistemas de produção. Por isso o script agrupa as reservas por código de aula e data, e a única saída é uma tabela como Spinning terça 18h com vinte e dois participantes.

3.2 Logs

Aisha acrescenta logs ao script para ajudar na depuração. A primeira versão registra cada reserva com o nome do aluno. Ela a altera para registrar apenas as referências das reservas e as contagens. Explica que os logs costumam ser guardados por mais tempo e acessados por mais pessoas do que os dados que descrevem, de modo que dados pessoais em logs criam exposição desnecessária. No script dela, uma linha de log agora diz que a reserva B-10422 foi contada para a aula SPN-18, o que ainda permite rastrear um erro até o arquivo de origem sem revelar quem frequentou a aula.

3.3 Validação da entrada

O script de Aisha lê arquivos exportados do sistema de reservas. Ela acrescenta verificações de que o arquivo só tem as colunas esperadas, e o script para se encontrar colunas inesperadas, como observações de saúde. Ela explica que a validação apoia a minimização, já que um script não deve tratar dados de que não precisa, e que parar de forma ruidosa é melhor do que tratar em silêncio informações sensíveis. A verificação compara a linha de cabeçalho com uma lista permitida de cinco colunas e encerra com uma mensagem que nomeia a coluna extra, como medical_notes, para que o responsável corrija a exportação.

3.4 Geração de dados de teste

Aisha escreve um gerador de alunos sintéticos com nomes, idades, tipos de plano e reservas. Inclui casos extremos, como alunos com nomes longos ou sem nenhuma reserva, e compartilha o gerador com os colegas. Ele usa uma semente aleatória fixa, então os colegas que o executam obtêm os mesmos alunos e podem comparar os resultados linha a linha. O Sr. Reilly observa que bons dados de teste tornam o desenvolvimento mais seguro e mais rápido, e que usar dados reais de alunos em testes é uma causa comum de incidentes, porque os ambientes de teste são menos protegidos.

Exemplo resolvido

Aisha escreve um script de presença que imprime totais sem nomes, registra só referências em log, rejeita colunas inesperadas e gera alunos sintéticos com casos extremos.

Caso sintético. Os scripts e os alunos são sintéticos.

Erros e limites

Dados sintéticos podem deixar de fora peculiaridades reais; acrescente-as de propósito.

Exercícios

Continue estudando — aula 03 (capítulo 03 de 30)

← Capítulo 02 · Índice das aulas · Capítulo 04 →

Continue para a próxima aula já escrita.