Mapa da aula
Aula 13 publicada. Mapa, exemplo, EX037.
flowchart TD
N0["13.1 Acesso ao banco de dados"]
N1["13.2 Injeção"]
N2["13.3 Campos sensíveis"]
N3["13.4 Backups para a recuperação"]
N0 --> N1 --> N2 --> N3
N3 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX037"]
Desenho lógico
flowchart LR
N0["13.1 Acesso ao banco de dados"]
N1["13.2 Injeção"]
N2["13.3 Campos sensíveis"]
N3["13.4 Backups para a recuperação"]
N0 --> N1 --> N2 --> N3 --> Q["EX037"]
[13.1 Acesso ao banco de dados]
|
v
[13.2 Injeção]
|
v
[13.3 Campos sensíveis]
|
v
[13.4 Backups para a recuperação]
|
v
[Exemplo resolvido] --> [Exercício EX037]
Objetivos de aprendizagem
Você vai (1) proteger bancos de dados contra ataques comuns; (2) controlar o acesso a campos sensíveis; (3) projetar backups que sustentem a recuperação.
13.1 Acesso ao banco de dados
O banco de dados de remessas da Saltmarsh guarda endereços de clientes e observações de entrega. Lindiwe descobre que a aplicação web se conecta com uma conta que pode ler, alterar e excluir todas as tabelas. Ela recomenda contas separadas para leitura e gravação, cada uma limitada às tabelas necessárias. Se a aplicação fosse comprometida, o atacante poderia então fazer menos. O Prof. Hale explica que as permissões de banco de dados muitas vezes são concedidas de forma ampla durante o desenvolvimento e nunca são restringidas, então revisá-las é valioso no início de qualquer avaliação. Os desenvolvedores criam as duas novas contas em uma semana.
13.2 Injeção
Lindiwe estuda como as aplicações montam as consultas ao banco de dados. Um código que insere a entrada do usuário diretamente no texto da consulta permite a injeção, em que uma entrada elaborada muda o significado da consulta. Ela revisa uma página de busca sintética e descobre que ela monta as consultas juntando strings. Ela a reescreve para usar consultas parametrizadas, de modo que a entrada seja sempre tratada como dado. Ela aprende que a injeção continua comum porque montar strings é fácil, e que a revisão de código e os testes precisam procurá-la especificamente. Ela acrescenta um teste que envia uma aspa e um ponto e vírgula.
13.3 Campos sensíveis
Alguns campos, como os números das carteiras de motorista, precisam de proteção mais forte que outros. Lindiwe pensa em cifrá-los no nível do campo, para que os administradores do banco de dados e os backups vejam apenas texto cifrado. As aplicações que precisam dos valores os decifram com chaves guardadas separadamente. Ela anota o custo: buscar e ordenar campos cifrados fica mais difícil. O Prof. Hale pede que ela justifique a cifração de campos por quem deve e quem não deve ver os valores, e não por um desejo geral de cifrar tudo. Ela conclui que apenas os números das carteiras justificam a cifração de campo na Saltmarsh.
13.4 Backups para a recuperação
Os backups protegem a disponibilidade e a integridade, mas só se puderem ser restaurados. Lindiwe aprende que o ransomware muitas vezes ataca os backups primeiro, então as cópias precisam ficar onde um atacante que controla a rede principal não consiga excluí-las. A Saltmarsh mantém backups noturnos num compartilhamento de rede acessível a partir dos servidores. Ela recomenda uma cópia adicional que não possa ser alterada por um período definido. Ela também observa que as restaurações precisam ser testadas, um tema a que o curso volta com um laboratório de verificação. A equipe de infraestrutura orça a cópia imutável.
Exemplo resolvido
Lindiwe restringe as contas do banco de dados, substitui as consultas montadas com strings por consultas parametrizadas, pondera a cifração de campo para os números das carteiras e recomenda cópias de backup imutáveis.
Caso sintético. Os bancos de dados são sintéticos.
Erros e limites
Um backup acessível e excluível a partir da rede principal pode não sobreviver ao ransomware.
Exercícios
-
EX037 — Contas do banco de dados. O que Lindiwe recomenda para o acesso da aplicação ao banco de dados?
Mostrar critérios de avaliação
Rubrica: 3 = contas separadas e limitadas de leitura e gravação;; 2 = parcialmente correto;; 1 = vago;; 0 = nenhuma. -
EX038 — Correção da injeção. Como ela corrige a página de busca?
Mostrar critérios de avaliação
Rubrica: 3 = consultas parametrizadas;; 2 = parcialmente correto;; 1 = outra coisa;; 0 = nenhuma. -
EX039 — Cópia de backup. Que cópia de backup extra ela recomenda?
Mostrar critérios de avaliação
Rubrica: 3 = uma que não possa ser alterada por um período definido;; 2 = parcialmente correto;; 1 = vago;; 0 = nenhuma.