Capítulo 3 — Fundamentos de programação
Mapa da aula
Aula 03 publicada. Mapa, exemplo, EX007.
flowchart TD
N0["3.1 Scripts como ferramentas"]
N1["Laboratório — Sinalizar regras de entrada abertas pa"]
N2["3.2 Validar a entrada"]
N3["Síntese"]
N0 --> N1 --> N2 --> N3
N3 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX007"]
Desenho lógico
flowchart LR
N0["3.1 Scripts como ferramentas"]
N1["Laboratório — Sinalizar regras de entrada abertas pa"]
N2["3.2 Validar a entrada"]
N3["Síntese"]
N0 --> N1 --> N2 --> N3 --> Q["EX007"]
[3.1 Scripts como ferramentas]
|
v
[Laboratório — Sinalizar regras de entrada abertas pa]
|
v
[3.2 Validar a entrada]
|
v
[Síntese]
|
v
[Exemplo resolvido] --> [Exercício EX007]
Objetivos de aprendizagem
Você vai (1) escrever pequenos scripts em Python para conferir configurações; (2) validar entradas com segurança; (3) ler código em busca de erros comuns de segurança.
3.1 Scripts como ferramentas
Ruth quer tecnólogos capazes de automatizar pequenas verificações. Tomás escreve um script em Python que lê as regras exportadas do firewall do centro de distribuição e lista qualquer regra que permita tráfego de entrada vindo de qualquer lugar. Escrever a verificação uma vez significa que ela pode rodar depois de cada mudança, em vez de depender de alguém lendo as regras a olho. Ele mantém o script curto, comenta cada etapa e o testa num arquivo de exemplo contendo uma regra que ele sabe que deve ser sinalizada. Testar com um caso sabidamente ruim confirma que o script de fato encontra o que diz encontrar.
Laboratório — Sinalizar regras de entrada abertas para qualquer origem
# Flag inbound firewall rules that allow any source (synthetic export).
rules = [("in", "any", "office-pc3", 3389), ("in", "10.1.0.0/16", "printer2", 9100),
("out", "depot", "any", 443), ("in", "any", "switch1", 22), ("in", "vpn", "office-pc1", 3389)]
flagged = [r for r in rules if r[0] == "in" and r[1] == "any"]
for d, src, dst, port in flagged: print(f"FLAG inbound from {src} to {dst} port {port}")
print(f"{len(flagged)} of {len(rules)} rules flagged")
Execute com python3 lab_rules.py. Saída verificada:
FLAG inbound from any to office-pc3 port 3389
FLAG inbound from any to switch1 port 22
2 of 5 rules flagged
3.2 Validar a entrada
O script seguinte de Tomás importa pesos de encomendas de um arquivo CSV enviado por um parceiro. Ruth pergunta o que acontece se uma linha contiver texto onde deveria haver um número, ou um peso negativo. Ele acrescenta verificações que rejeitam as linhas ruins e as relatam, em vez de travar ou armazenar bobagens em silêncio. A validação de entrada protege os sistemas tanto de erros quanto de ataques deliberados. Ele segue o princípio de validar contra o que é permitido, como números entre zero e setenta quilos, em vez de tentar listar tudo o que é proibido.
3.3 Ler código em busca de erros
Ruth dá à turma pequenos trechos de código para revisar. Tomás encontra uma consulta ao banco de dados montada juntando texto com a entrada do usuário, o que permite injeção; uma senha escrita no código-fonte; e uma mensagem de erro que mostra detalhes internos aos usuários. Para cada um, ele escreve o padrão mais seguro: consultas parametrizadas, segredos carregados de um cofre gerenciado e mensagens de erro genéricas, com os detalhes registrados de forma privada. Ler código em busca de erros comuns é uma habilidade que os tecnólogos usam ao revisar scripts de fornecedores e pequenas ferramentas internas.
Exemplo resolvido
Tomás escreve e testa um script de verificação de regras, acrescenta validação por lista de permissão (allow-list) a uma importação e revisa trechos de código em busca de três erros comuns.
Caso sintético. As regras e os trechos de código são sintéticos.
Erros e limites
Scripts pequenos podem crescer sem testes. As allow-lists precisam ser atualizadas quando as regras do negócio mudam.
Exercícios
-
EX007 — Caso sabidamente ruim. Por que testar o script com uma regra sabidamente ruim? Rubrica: 3 = para confirmar que ele encontra o que diz encontrar;; 2 = confirmação;; 1 = rapidez;; 0 = nenhuma.
-
EX008 — Regras sinalizadas. Quantas regras o laboratório sinalizou? Rubrica: 3 = duas: 3389 para office-pc3 e 22 para switch1;; 2 = duas;; 1 = vago;; 0 = nenhuma.
-
EX009 — Consulta mais segura. Qual é o padrão mais seguro para consultas ao banco com entrada do usuário? Rubrica: 3 = consultas parametrizadas;; 2 = parâmetros;; 1 = juntar strings;; 0 = nenhuma.
Síntese
Scripts pequenos e testados e uma leitura cuidadosa do código permitem aos tecnólogos verificar sistemas de forma confiável e identificar erros comuns.
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.