Teste de segurança com Selenium: integração com o OWASP ZAP
Como testar possíveis vulnerabilidades de segurança de um site enquanto rodamos testes funcionais automatizados? O software é funcional se tiver um problema de segurança? Neste artigo, detalhamos como integrar o Selenium e o OWASP ZAP para fazer teste de segurança com Selenium de forma eficiente e com qualidade.
Índice

Antes de entrar na integração para fazer teste de segurança com Selenium, vale parar um momento para falar da OWASP. E, em especial, do OWASP ZAP (Zed Attack Proxy).
O que é o OWASP ZAP e como ele ajuda no teste de segurança?¶
A OWASP é uma organização e comunidade de referência em segurança web e, agora, também segurança mobile. Propõe uma metodologia de código aberto e colaborativa para auditorias de segurança. Isso garante a revisão regular de um projeto para minimizar erros e riscos.
O trabalho da OWASP é crítico numa época em que fica cada vez mais urgente acertar a segurança de TI. Segundo o Relatório de Riscos Globais 2023, a tecnologia vai “agravar desigualdades”, enquanto “os riscos de cibersegurança vão continuar sendo uma preocupação constante” nos próximos 10 anos.

O teste de segurança com Selenium, graças à integração com o OWASP ZAP, é um grande passo para ganhar tempo, já que dá para aproveitar os testes funcionais automatizados na detecção de possíveis vulnerabilidades.
O OWASP ZAP é uma ferramenta de código aberto de teste de segurança de aplicações web, usada para identificar vulnerabilidades e entregar uma avaliação de segurança completa.
Teste de segurança com Selenium – recursos do OWASP ZAP:¶
✅Varredura automatizada de vulnerabilidades¶
Esse tipo de processo de teste automatizado ajuda a detectar problemas como injeção de SQL, XSS, vulnerabilidades de sessão, vulnerabilidades de autenticação e outros.
✅Suporte a vários protocolos¶
Oferece suporte a HTTP, HTTPS e TCP.
✅Interceptação por proxy¶
Atua como proxy entre o navegador e a aplicação web. Isso permite interceptar e modificar requisições e respostas.
✅Modo de navegação manual¶
Permite navegar manualmente pelas aplicações web. Esse modo é especialmente útil no teste funcional de funcionalidades específicas e personalizadas.
✅Relatórios detalhados¶
Entrega relatórios detalhados das vulnerabilidades detectadas. Isso inclui a gravidade da vulnerabilidade e sugestões de como corrigi-la.
✅Integração com outros sistemas¶
Pode se integrar a outros sistemas de teste de segurança e de automação de testes, como o Jenkins, o Selenium etc.
✅Suporte multiplataforma¶
É compatível com Windows, Linux e Mac OS X.
✅Personalização e extensibilidade¶
É altamente personalizável e extensível. Isso permite que os usuários adicionem os próprios scripts de teste e ajustem a ferramenta às necessidades específicas.
Integração do OWASP ZAP com o Selenium¶
Este projeto busca fazer teste de segurança com Selenium. Para combinar o ZAP com o Selenium, primeiro é preciso ter um projeto Selenium. É necessário configurar o proxy do ZAP nos scripts do projeto Selenium para que todas as requisições HTTP do site em teste passem pelo ZAP.
A seguir, compartilhamos um guia passo a passo de como fazer essa integração para alcançar o teste de segurança com Selenium:
1. Instale o OWASP ZAP (versão 2.10.0 ou superior)¶
O caminho mais fácil é instalar a GUI do ZAP, mas dá para subir o proxy com Docker.
2. Inicie o OWASP ZAP¶
Configure a porta e o endereço IP para o Selenium se conectar. Por padrão, o IP será localhost e a porta será 8080. Para obter a API KEY, abra a GUI, vá em Ferramentas > Opções > API e copie o texto do campo API Key.
3. Configure o Selenium para usar o proxy do ZAP¶
Parta de um projeto Selenium criado com as dependências configuradas corretamente e adicione o proxy com o código a seguir:
@BeforeMethod
public void setup(){
String proxyServerUrl = ZAP_PROXY_ADDRESS + ":" + ZAP_PROXY_PORT;
Proxy proxy = new Proxy();
proxy.setHttpProxy(proxyServerUrl);
proxy.setSslProxy(proxyServerUrl);
ChromeOptions co = new ChromeOptions();
co.setAcceptInsecureCerts(true);
co.setProxy(proxy);
WebDriverManager.chromedriver().setup();
driver = new ChromeDriver(co);
api = new ClientApi(ZAP_PROXY_ADDRESS, ZAP_PROXY_PORT, ZAP_API_KEY);
}4. Gere um relatório¶
Depois de executar os testes, você pode gerar um relatório detalhado das vulnerabilidades detectadas pelo ZAP no método tearDown (ou como ele se chamar em cada caso).
@AfterMethod
public void tearDown() throws Exception{
if (api != null) {
String title = "POC ZAP Selenium - Abstracta";
String template = "traditional-html";
String description = "This is a ZAP test report";
String reportfilename = "abstracta-web-security-report.html";
String targetFolder = System.getProperty("user.dir");
try {
ApiResponse res = api.reports.generate(title, template, null,
description, null, null, null,null, null, reportfilename,null,
targetFolder,null);
System.out.println("ZAP report generated here: " + res.toString());
} catch (ClientApiException ex) {
throw new Exception(ex);
}
}
}Para uma demonstração rápida do funcionamento e para testar a integração do ZAP com o Selenium (teste Selenium), compartilhamos uma prova de conceito no nosso GitHub. Não hesite em experimentar e fale conosco se tiver alguma dúvida!
Como levar a segurança dos seus aplicativos mobile ao próximo nível da OWASP? Não perca este artigo!
Precisa de ajuda com teste de segurança?
Somos parceiros de qualidade! Saiba mais sobre as nossas soluções aqui! Fale conosco para conversar sobre como podemos ajudar você a fazer o seu negócio crescer.
Fique conectado
com a Abstracta
Notícias, artigos e recursos para construir software melhor.
Leia sobre nossa política de privacidade.