diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml index 116041d..a0d071c 100644 --- a/.gitea/workflows/deploy.yaml +++ b/.gitea/workflows/deploy.yaml @@ -44,15 +44,16 @@ jobs: # ETAPA 2: SANDBOX (AMBIENTE DE TESTE DINÂMICO) # ========================================== - - name: Criar Sandbox Temporária +- name: Criar Sandbox Temporária run: | # Remover qualquer resíduo de sandbox anterior docker rm -f website-test-sandbox || true - # Levantar a Sandbox na porta temporária 8282 - docker run -d --name website-test-sandbox -p 8282:80 nginx:alpine + # Criamos a Sandbox. Como o ZAP vai aceder pela rede interna do Docker, + # já não precisamos de expor portas para o exterior (muito mais seguro)! + docker run -d --name website-test-sandbox nginx:alpine - # Copiar o index.html atual para a Sandbox para poder ser testado + # Copiar o index.html atual para a Sandbox docker cp index.html website-test-sandbox:/usr/share/nginx/html/index.html # Aguardar 5 segundos para o servidor Nginx iniciar @@ -62,13 +63,18 @@ jobs: # ETAPA 3: DAST - TESTE DINÂMICO (OWASP ZAP) # ========================================== - # Ataca a Sandbox (8282) e não a produção. Se encontrar falhas graves, a pipeline para aqui. + # Ataca a Sandbox usando a rede interna do Docker (--link) e o nome do container - name: OWASP ZAP Baseline Scan run: | mkdir -p qatests chmod 777 qatests - docker run --user root -v $(pwd)/qatests:/zap/wrk/:rw -t ghcr.io/zaproxy/zaproxy:stable zap-baseline.py \ - -t http://51.89.40.2:8282 \ + + # Usamos o --link para o container do ZAP conseguir "ver" o container da sandbox diretamente + docker run --user root \ + --link website-test-sandbox:website-test-sandbox \ + -v $(pwd)/qatests:/zap/wrk/:rw \ + -t ghcr.io/zaproxy/zaproxy:stable zap-baseline.py \ + -t http://website-test-sandbox \ -r report.html # Garante que a Sandbox é desmantelada mesmo que o passo do ZAP falhe