◇ OpenCyber Academy
Engenharia · Capítulo 4 · Português

Capítulo 4 — Programação I

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 4 — Programação I

Mapa da aula

Aula 04 publicada. Mapa, exemplo, EX010.

flowchart TD
  N0["4.1 Programas que verificam a entrada"]
  N1["4.3 A biblioteca padrão primeiro"]
  N2["Síntese"]
  N0 --> N1 --> N2
  N2 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX010"]

Desenho lógico

flowchart LR
  N0["4.1 Programas que verificam a entrada"]
  N1["4.3 A biblioteca padrão primeiro"]
  N2["Síntese"]
  N0 --> N1 --> N2 --> Q["EX010"]
[4.1 Programas que verificam a entrada]
    |
    v
[4.3 A biblioteca padrão primeiro]
    |
    v
[Síntese]
    |
    v
[Exemplo resolvido] --> [Exercício EX010]

Objetivos de aprendizagem

Você vai (1) escrever programas pequenos e legíveis que validam a entrada; (2) tratar erros sem vazar detalhes sensíveis; (3) usar a biblioteca padrão em vez de reinventar funções de segurança.

4.1 Programas que verificam a entrada

O primeiro curso de programação de Sofia usa Python. Daniel pede que ela escreva um parser para registros sintéticos de validação de passagens: identificador do cartão, identificador do validador, timestamp e valor. Sua primeira versão confia em todos os campos. Ele lhe dá linhas malformadas, como um valor negativo, um timestamp no futuro e um identificador de cartão com caracteres inesperados, e o programa ou trava ou aceita absurdos. Ela o reescreve para validar cada campo contra um padrão de allow-list e uma faixa, rejeitando a linha com um motivo. A validação de entrada nas fronteiras é um dos hábitos mais básicos de projeto seguro, e começa nos primeiros programas que um estudante escreve.

4.2 Erros sem vazamentos

Quando a validação falha, o programa precisa relatar o suficiente para que um operador corrija o problema, mas sem expor segredos ou detalhes internos a quem forneceu a entrada. Sofia separa duas mensagens: um erro público curto, como registro inválido, e uma entrada detalhada de log interno com o número da linha e o motivo, gravada num arquivo com permissões restritas. Ela evita mostrar stack traces aos usuários. Daniel explica que erros verbosos em serviços web já revelaram nomes de bancos de dados, caminhos de arquivos e versões a atacantes, entregando-lhes um mapa. O tratamento de erros faz parte da interface e merece o mesmo cuidado de projeto.

4.3 A biblioteca padrão primeiro

Sofia precisa de identificadores aleatórios para cartões de teste. Primeiro ela usa o módulo random e depois aprende que, para qualquer coisa relevante para a segurança, o módulo secrets do Python é obrigatório, porque ele obtém os valores da fonte segura do sistema operacional. Ela também precisa comparar uma tag de autenticação e aprende a usar hmac.compare_digest. A regra de Daniel é simples: use a biblioteca padrão ou um pacote bem mantido para funções de segurança, leia sua documentação e nunca escreva você mesmo uma cifra, um hash ou um gerador aleatório. A habilidade em programação se mostra ao compor corretamente partes confiáveis, e não ao recriá-las.

Exemplo resolvido

Sofia reescreve um parser de registros de passagem com validação por allow-list, mensagens de erro públicas e internas separadas e identificadores de teste gerados com secrets.

Caso sintético. Os registros, formatos e identificadores são sintéticos.

Erros e limites

As allow-lists precisam de manutenção quando os formatos mudam. Os logs internos ainda podem vazar se suas permissões ou sua retenção estiverem erradas.

Exercícios

Síntese

Os primeiros programas ensinam segurança quando validam as entradas, mantêm internos os detalhes de erro e se apoiam em funções de bibliotecas avaliadas.

Continue estudando — aula 04 (capítulo 04 de 50)

← Capítulo 03 · Índice das aulas · Capítulo 05 →

Continue para a próxima aula já escrita.