Awesome CopilotAdventures

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.js ou test.js;
  • não houver operadores de shell, substituições, caminhos absolutos ou travessia para diretórios superiores.

Execute node verify.js.

Execução guiada

  1. Execute o verificador intocado e registre o estado inicial esperado.
  2. Peça uma explicação fundamentada na fonte do código e das verificações relevantes.
  3. 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.
  4. Implemente apenas a fatia aprovada e então execute novamente o mesmo verificador.
  5. Permita temporariamente um argumento extra e confirme que o caso correspondente falha. Restaure a allowlist.
  6. 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.

Buscar

Busca em português do Brasil. Os caminhos e os exemplos executáveis mantêm o texto original.