← Back to list

Como Automatizei uma simples verificação de Segurança Web com um Script Python

De horas de cliques em abas a um único comando no terminal. Uma história sobre a automação da validação de CSP, HSTS e certificados SSL.

Jonathan M. · 2025-09-25 22:06 · 1 claps · 3.7 min read
#security #web-development #python #infosecurity #hacking
Open on Medium ↗
Wiki topics: 🌐 · Web Development 🔒 · Cybersecurity

Como Automatizei uma simples verificação de Segurança Web com um Script Python

De horas de cliques em abas a um único comando no terminal. Uma história sobre a automação da validação de CSP, HSTS e certificados SSL.

Toda vez é a mesma história. Você finaliza o deploy de um novo site ou aplica uma série de patches de segurança em vários servidores. O trabalho pesado parece ter acabado. Você se recosta na cadeira, toma um gole de café e, então, ela chega: a lista. Uma planilha ou um ticket com dezenas de URLs internas e a incumbência de “validar se as políticas de segurança foram aplicadas corretamente”.

É o início de um ritual lento e doloroso.

A Rotina Lenta e Frustrante da Verificação Manual

Para cada URL da lista, o processo começa:

  1. Abro o site no navegador.
  2. Abro as Ferramentas de Desenvolvedor (F12) para checar os cabeçalhos de resposta. O Content-Security-Policy (CSP) está lá? Ele contém 'unsafe-inline'? E o X-Frame-Options?
  3. Abro uma nova aba e vou até um testador de SSL para verificar o tempo de expiração do certificado e se o hostname corresponde.
  4. Em outra aba, acesso o site do HSTS Preload para ver se o domínio está na lista.
  5. Tento acessar a versão http:// para garantir que o redirecionamento para https:// está funcionando.
  6. Repito tudo para a próxima URL.

Depois da quinta URL, a atenção começa a falhar. A mente entra no piloto automático. Será que eu verifiquei a diretiva includeSubDomains no HSTS do site anterior ou só imaginei isso? A frustração cresce. Esse trabalho é repetitivo, demorado e terrivelmente propenso a erro humano. E se a lista tivesse 50 domínios? A tarefa levaria horas.

Foi em um desses dias, com uma lista de 15 URLs para validar, que o estalo veio. “Já chega. Eu não sou um desenvolvedor mas eu consigo automatizar coisas.”

Por que o Python?

Eu precisava de uma ferramenta que pudesse fazer tudo isso por mim, direto do meu terminal. A escolha da linguagem foi óbvia: Python. Com sua sintaxe limpa e um ecossistema de bibliotecas robusto, ele é o canivete suíço perfeito para esse tipo de automação.

Com as bibliotecas requests para fazer as chamadas HTTP e ssl para inspecionar os certificados, eu tinha os blocos de construção fundamentais. O plano era simples: criar um script que lesse uma lista de URLs e, para cada uma, executasse a mesma bateria de testes que eu fazia manualmente.

Mãos à Obra: Construindo Nosso Scanner de Segurança

Comecei a traduzir meu fluxo de trabalho manual em funções Python. A beleza da programação é como ela força você a sistematizar o conhecimento.

Primeiro, a análise dos cabeçalhos. Com uma única requisição, eu poderia capturar todos os headers de uma vez e verificar cada política que precisava.

# Parte da lógica para analisar os headers
headers = response.headers

# --- CSP (Content Security Policy) ---
csp = headers.get('Content-Security-Policy')
if not csp:
    print(f"{RED}[FAIL]{RESET} CSP is not implemented.")
else:
    print(f"{GREEN}[PASS]{RESET} CSP is implemented.")
    if 'unsafe-eval' in csp:
        print(f"{RED}[FAIL]{RESET} CSP contains unsafe-eval.")

# --- HSTS (HTTP Strict Transport Security) ---
hsts = headers.get('Strict-Transport-Security')
if not hsts:
    print(f"{RED}[FAIL]{RESET} HTTP Strict Transport Security (HSTS) not enforced.")
else:
    if 'includeSubDomains' in hsts:
        print(f"{GREEN}[PASS]{RESET} HSTS header contains 'includeSubDomains'.")

Aos poucos, o script foi tomando forma. Adicionei a verificação do certificado SSL, a consulta à API do HSTS Preload e a checagem do redirecionamento. O resultado foi uma ferramenta que fazia em segundos o que me levava quase uma hora.

Conforme usei a ferramenta, percebi que às vezes eu só queria checar uma única URL rapidamente, sem precisar criar um arquivo de texto. A evolução foi natural: adicionei uma lógica simples para que o script aceitasse tanto um arquivo .txt quanto um domínio diretamente como argumento.

# Lógica para aceitar arquivo ou URL única
input_arg = sys.argv[1]
urls = []

if os.path.isfile(input_arg):
    # Se for um arquivo, lê as linhas
    with open(input_arg, 'r') as f:
        urls = [line.strip() for line in f if line.strip()]
else:
    # Se não, trata como URL única
    urls.append(input_arg)

A Nova Realidade: Validação em Segundos

Hoje, o ritual é diferente. A mesma lista de 15 URLs chega. Em vez de um suspiro de frustração, abro meu terminal e executo um único comando:

python WSPS.py urls_para_validar.txt

Em menos de um minuto, tenho um relatório completo e colorido, mostrando exatamente o que está em conformidade e o que precisa de atenção. A validação de segurança deixou de ser um gargalo para se tornar uma etapa trivial e eficiente do meu fluxo de trabalho.

Mais que um script, uma mentalidade!

Essa jornada para criar uma ferramenta simples reforçou uma lição poderosa: as tarefas mais tediosas e repetitivas são, muitas vezes, as melhores candidatas à automação. No mundo da segurança e do DevOps, onde a consistência é fundamental, automatizar nossas verificações não é um luxo, é uma necessidade.

O Web Security Policy Scanner (WSPS) nasceu de uma frustração pessoal, mas se tornou um exemplo de como podemos transformar nosso próprio trabalho com algumas linhas de código.

E a melhor parte? Ele é open-source. Se você enfrenta o mesmo desafio, eu te convido a usar, aprimorar e contribuir com o projeto.

Você pode encontrar o código completo no meu GitHub: https://github.com/Silva-Sec/PurpleTeaming/tree/main/WebSecurityPolicyScanner

Vamos parar de clicar e começar a scriptar.


메타데이터
post_id
8d2ddeb2f062
slug
como-automatizei-uma-simples-verificação-de-segurança-web-com-um-script-python-8d2ddeb2f062
url
https://medium.com/@silvasec/como-automatizei-uma-simples-verifica%C3%A7%C3%A3o-de-seguran%C3%A7a-web-com-um-script-python-8d2ddeb2f062
canonical_url
https://medium.com/@silvasec/como-automatizei-uma-simples-verifica%C3%A7%C3%A3o-de-seguran%C3%A7a-web-com-um-script-python-8d2ddeb2f062
author_url
https://medium.com/@silvasec
status
ok
fetched_at
2026-07-17 07:03:26