Laboratório das Proteções de Stonevale
[!TIP] Baixe o ZIP do aluno ou copie todo este laboratório para uma pasta não usada. Leia a configuração e as etapas opcionais do GitHub primeiro.
Antes de executar qualquer coisa
| Item | Contrato |
|---|---|
| Runtime | Node 24; as integrações ao vivo são separadas |
| Arquivos para inspecionar | starter/guard.js, verify.js |
| Diretório do verificador | Raiz do kit extraído: node verify.js; de starter/: node ../verify.js |
| Estado inicial | Starter inacabado é rejeitado; preserve o diagnóstico |
| Evidência final | Apenas os dois scripts nomeados são permitidos; as strings inseguras fornecidas são rejeitadas sem execução. |
Conceito em prática: A política recebe uma string de comando e devolve uma decisão. Uma string que contém operadores de shell é uma entrada de teste rejeitada, nunca um comando que este exercício pede para você executar.
Implemente guardrails determinísticos de comando antes que uma etapa de automação chegue a um shell.
Missão
Complete starter/guard.js. isAllowed(command) deve retornar true somente quando:
- a entrada for uma string não vazia;
- o executável for
node; - o script for
verify.jsoutest.js; - não houver operadores de shell, substituições, caminhos absolutos ou travessia para diretórios superiores.
Execute node verify.js.
Execução guiada
- Execute o verificador intocado e registre o estado inicial esperado.
- Peça uma explicação fundamentada na fonte do código e das verificações relevantes.
- Planeje: especifique pares exatos de executável/script permitidos e todas as formas rejeitadas. Mantenha as entradas de teste como strings; não implemente execução de shell. Declare o comportamento booleano para entrada vazia e de tipo incorreto.
- Implemente apenas a fatia aprovada e então execute novamente o mesmo verificador.
- Permita temporariamente um argumento extra e confirme que o caso correspondente falha. Restaure a allowlist.
- Revise o diff e registre a limitação: esta função não está instalada como um hook ao vivo. O suporte a hooks é Preview e qualquer instalação requer uma configuração revisada separada.
Conclusão e redefinição segura
- O comportamento exigido e seu caso negativo têm evidência observada.
- O resultado distingue a verificação local do comportamento ao vivo do host/runtime.
- Nenhuma credencial, arquivo não relacionado ou serviço foi alterado.
- A evidência está salva antes de redefinir o starter copiado.
Use uma nova extração para outra tentativa, ou restaure apenas os arquivos nomeados a partir de uma linha de base Git criada nesta cópia. Nunca aplique um comando de redefinição da raiz do currículo a partir de um projeto diferente.
Continue com a aventura e a rubrica.