Ebook · Guia prático

Seu HTML
Blindado

O guia para leigos: como compartilhar relatórios e ferramentas em HTML com login por e-mail, código de acesso e trava de rede, sem programar e sem pagar servidor.

Edição 2026 · Versão 4.0
Antes de começar

Como usar este ebook

Ele foi escrito para quem cria ferramentas em HTML, com ou sem ajuda de IA, e precisa entregá-las a outras pessoas sem perder o controle.

Você não precisa saber programar. Precisa de um computador, um e-mail e cerca de uma hora. Ao final, terá uma ferramenta no ar, acessível somente por quem você autorizar, e um histórico de quem entrou.

Como lerLeia de ponta a ponta na primeira vez. Depois, use os capítulos 5 e 6 como roteiro de execução. As telas são prints reais da Cloudflare: ela atualiza o visual com frequência, mas a lógica se mantém.

Sumário

1O dia em que o relatório “vazou”
2As 4 formas de distribuir um HTML
3Como funcionam as duas barreiras
4Prepare o seu arquivo (auditoria em 5 minutos)
5Cloudflare do zero, passo a passo
6A segunda barreira: trava por rede
7Rotina, erros comuns e casos reais
8Seu plano de 7 dias (Sprint de 60 min + Rollout)
1

O dia em que o relatório “vazou”

Uma história comum, e o que ela ensina.

M
Marina, analista de controladoria
Personagem ilustrativa, baseada em situações reais

Marina passou duas semanas construindo, com ajuda de IA, um simulador de orçamento em HTML. Um arquivo só. O gestor carrega sua planilha, o navegador processa tudo e a ferramenta mostra cenários. Ficou excelente.

Na sexta-feira, ela precisou entregar a ferramenta para 30 gestores. E travou em uma pergunta:

“Como eu entrego isso sem perder o controle de quem tem acesso?”

Ela pensou em três saídas:

Marina não errou. Ela só não tinha um método. Este ebook é o método que ela precisava.

A boa notíciaExiste um jeito de resolver isso em minutos, com custo zero para até 50 usuários* por organização e com a TI enxergando tudo. Vamos a ele.

* Condição do plano gratuito da Cloudflare na data de criação deste ebook. Confirme a política atual no site da Cloudflare.

O custo invisível: LGPD, Auditoria e Risco de CarreiraQuando um simulador de orçamento ou folha salarial vaza por e-mail, a responsabilidade recai sobre quem gerou o arquivo sem controle de acesso. Eliminar o Shadow IT (ferramentas paralelas sem governança) protege a empresa de incidentes de conformidade e posiciona você como aliado estratégico da TI e da diretoria.
2

As 4 formas de distribuir um HTML

Cada uma resolve uma parte do problema. Só uma resolve tudo.

1. E-mail

Rápido, mas o arquivo se espalha, as versões se misturam e ninguém sabe quem tem o quê.

2. Hospedagem comum

URL pública. Qualquer pessoa com o link entra. Proteção forte costuma ser paga.

3. Servidor interno

Muito seguro, porém lento e caro: semanas de trabalho da TI para cada nova ferramenta.

4. Cloudflare Access

Login por e-mail + código único + trava de rede. Imediato e sem custo até 50 usuários*.

E-mailHosped. comumServidor internoCloudflare
AutenticaçãoNenhumaLogin comumRede corporativaE-mail + código + rede
Visão da TINãoParcialSimSim
CustoR$ 0US$ 20 a 300/mêsHoras internasR$ 0*
EntregaImediataDiasSemanasImediata
Próximo HTMLDescontroleRepete o esforçoFila da TIModelo replicável
Repare no último critérioNão basta resolver a primeira ferramenta. Você vai criar outras. Um método replicável faz a segunda levar 15 minutos, não 15 dias.
Visão C-Level: Previsibilidade Orçamentária, Economia de OPEX e Rota 2 de EscalaSubstituir licenças Viewer de BI ou servidores dedicados por esta arquitetura gera uma economia direta (Cost Avoidance) de R$ 12.000 a R$ 36.000/ano em OPEX, reduzindo o Lead Time de 6 semanas para 60 minutos. O plano Zero Trust Free cobre até 50 usuários a R$ 0/mês, mas atenção à regra contábil da Cloudflare: ao incluir o 51º usuário no plano Standard (US$ 7/assento/mês), a cobrança incide sobre todos os 51 assentos (~US$ 357/mês). Para escalar além de 50 gestores mantendo custo zero (R$ 0), utilize a Rota 2 de Governança C-Level: (a) Segregação por Tenant/Unidade de Negócio: estruture contas/organizações isoladas por diretoria (ex.: Controladoria, RH, Operações), garantindo até 50 assentos gratuitos por área com isolamento de auditoria; ou (b) Validação Direta em Borda: aplique verificação por token/credencial de equipe somada à trava de IP corporativo direto no _middleware.js (Capítulo 6, gratuito até 100.000 requisições/dia).
3

Como funcionam as duas barreiras

Duas portas independentes antes da sua ferramenta.

Usuárioabre o link
›
Barreira 1E-mail na lista?
Código correto?
›
Barreira 2IP autorizado?
+ selos de segurança
›
Ferramentadados só no navegador

Barreira 1: quem é você?

A Cloudflare Access pede o e-mail e confere se ele está na lista de autorizados. Se estiver, envia um código de uso único para essa caixa de entrada. Só quem tem acesso ao e-mail consegue digitar o código. A sessão dura 24 horas.

Barreira 2: de onde você está vindo?

Um pequeno programa (o “middleware”) confere o endereço de rede (IP) de quem chega. Se não for o da empresa, a resposta é “Acesso negado”, mesmo com e-mail e código válidos. Ele também adiciona selos de segurança nas páginas.

E os dados?

Aqui está o ponto mais importante: como o HTML é autocontido, os arquivos (CSVs, planilhas) que cada pessoa carrega são processados somente no navegador dela. Nada viaja, nada é guardado em servidor.

Por que duas barreiras?Se alguém descobrir o link, esbarra na barreira 1. Se conseguir um e-mail autorizado, esbarra na barreira 2. Uma falha não derruba a outra.
4

Prepare o seu arquivo

A blindagem começa dentro do HTML.

Um HTML autocontido carrega tudo dentro dele: visual, lógica e imagens. Não puxa nada de fora e não envia nada para fora. Teste simples: abra o arquivo sem internet. Se funciona igual, está no caminho certo.

Auditoria em 5 minutos, sem ser programador

Abra o arquivo no Bloco de Notas, aperte Ctrl + F e procure:

Procure porSignificaFaça
fetch( · XMLHttpRequestChamadas de redeO ideal é nenhuma.
http:// · https://Recursos externosSó aceite links de texto.
senha · password · tokenCredenciais esquecidasRemova já.
<script src=Script de foraEmbuta no arquivo.
Atalho com IAPeça: “Revise este HTML e liste qualquer chamada de rede, credencial embutida ou recurso externo.” Guarde a resposta como registro de auditoria.

Organize a pasta

minha-ferramenta/
  ├── index.html          ← sua ferramenta (renomeie para index.html)
  └── functions/
        └── _middleware.js ← trava de rede (capítulo 6)
5

Cloudflare do zero, passo a passo

Nenhuma experiência prévia. Siga na ordem.

1

Crie sua conta gratuita (Governança contra Risco de Pessoa-Chave)

  1. Acesse dash.cloudflare.com/sign-up.
  2. Use um e-mail corporativo funcional/departamental (ex.: controladoria@suaempresa.com.br) e uma senha forte, evitando amarrar o ativo ao e-mail pessoal de um único analista.
  3. Confirme o e-mail, ative a verificação em duas etapas (2FA) e cadastre um segundo administrador de contingência em Manage Account → Members.
Tela de criação de conta gratuita na Cloudflare
dash.cloudflare.com/sign-up
Criar conta
E-mail
admin@suaempresa.com.br
Senha
••••••••••••
Criar conta
Print real: criação da conta gratuita na Cloudflare
Ilustração: ① e-mail funcional ② senha forte ③ criar conta + 2FA
2

Publique o HTML

  1. Menu Workers e Pages → Criar aplicativo → Pages → Upload direto.
  2. Dê um nome (ex.: orcamento-2026).
  3. Arraste a pasta com o index.html e clique em Implantar.
  4. Você recebe um endereço como orcamento-2026.pages.dev.
Tela de upload direto de pasta no Cloudflare Pages
Workers e Pages › Criar
Criar um projeto
Nome: orcamento-2026
Arraste aqui a pasta com o index.html
Implantar site
Publicado: orcamento-2026.pages.dev
Print real: Cloudflare Pages: upload direto da pasta com o index.html
Ilustração: ① arraste a pasta ② implante
Atenção: Protocolo Zero Janela de ExposiçãoNeste momento o endereço já existe e é público. Não divulgue o link ainda. Boa prática profissional: no primeiro upload (Passo 2), suba um index.html simples escrito apenas “Em configuração”. Conclua a blindagem nos Passos 3 a 5 e só então suba o index.html definitivo com os dados reais. Assim, sua ferramenta real nasce 100% protegida desde o primeiro segundo.
3

Ative o Zero Trust (o “porteiro”)

  1. Abra Zero Trust (ou one.dash.cloudflare.com).
  2. Escolha o nome da equipe (ex.: minhaempresa).
  3. Selecione o plano Free. Se pedirem forma de pagamento, confirme que o plano escolhido é o gratuito (R$ 0 até 50 usuários).
Tela de escolha do plano Free no Zero Trust
Print real: Zero Trust: escolha do plano Free
4

Crie a aplicação Access

  1. Access → Applications → Add an application → Self-hosted.
  2. Preencha o nome e a Session Duration (24 horas).
  3. Role até a seção Destinations: é nela que você define o endereço protegido (próximo passo).
Configuração da aplicação Self-hosted no Cloudflare Access
Zero Trust › Access › Applications › Add
Configure a aplicação
Application name
Orçamento 2026
Sessão
24 hours
Next
Print real: Zero Trust › Access: configuração da aplicação
Ilustração: ① nome ② duração
5

Defina o endereço protegido (subdomínio)

  1. Na seção Destinations, em Public hostnames, clique em Add public hostname para abrir uma linha de endereço (marca 1).
  2. No campo Subdomain (opcional), digite "*" para que a segurança seja garantida em todos os subdomínios.
  3. Abra o menu Domain (marca 3) e selecione, na lista, o domínio da sua conta (marca 4).
  4. Deixe Path em branco para proteger o site inteiro. Se criar uma linha por engano, remova-a pelo ícone da lixeira.
Seção Destinations do Cloudflare Access com os campos Subdomain, Domain e Path
Access › Applications › Destinations
Destinations
Public hostnames
Subdomain (optional)
orcamento
Domain
suaempresa.com.br
Path (optional)
Path
+ Add public hostname
Print real: (1) adicionar hostname, (2) subdomínio, (3) lista de domínios, (4) domínio escolhido
Ilustração: ① adicionar ② subdomínio ③ domínio
Domínio próprio × .pages.dev (Bloqueio de Preview URLs)O caminho mais robusto é um subdomínio do seu domínio, gerenciado na Cloudflare: assim a URL inteira fica atrás do porteiro. Com apenas o .pages.dev, ative em seu projeto Pages o atalho Settings → Access policy para cobrir também os subdomínios de implantação (*.orcamento-2026.pages.dev) e confira em Access → Applications se o endereço de produção está listado. Sempre teste em janela anônima.
6

Defina quem pode entrar

  1. Nome da política: Equipe autorizada. Action: Allow.
  2. Em Include → Emails, digite os e-mails autorizados (ou Emails ending in @suaempresa.com.br).
  3. Opcional: em Require → IP ranges, informe o IP fixo da empresa.
  4. Mantenha One-time PIN ativado e clique em Save.
Política Allow com e-mails autorizados e One-time PIN
Access › Applications › Policies
Política: Equipe autorizada
Action: Allow
Include: Emails
maria@suaempresa.com.br
joao@suaempresa.com.br
Require: IP ranges (opcional)
203.0.113.10/32
Login methods
One-time PIN
Print real: política de acesso com e-mails autorizados e One-time PIN
Ilustração: ① e-mails ② rede da empresa ③ código por e-mail
Qual é o IP da empresa? (+ Script pronto para pedir à TI)Com o computador na rede da empresa, acesse meuip.com.br. Para alinhar com a TI sem gerar atrito, envie esta mensagem: “Time de TI, estamos homologando a distribuição interna de relatórios estáticos client-side (processamento 100% no navegador, sem banco de dados externo e com bloqueio CSP connect-src 'none') atrás de autenticação OTP no Cloudflare Zero Trust. Podem me informar nossos blocos de IP fixo de saída (IPv4 e prefixo IPv6) para restringirmos o acesso exclusivamente à nossa rede corporativa?”
7

Teste como usuário

  1. Abra uma janela anônima e cole o endereço.
  2. Digite um e-mail autorizado e receba o código de 6 dígitos.
  3. Digite o código: a ferramenta abre.
  4. Teste um e-mail não autorizado: o código não deve chegar.
E-mail da Cloudflare Access com o código de uso único
Sua caixa de entrada
De: Cloudflare Access
Assunto: Seu código de acesso
482 913
Print real: o código de uso único chega por e-mail
Ilustração: ① o código de uso único chega por e-mail
Barreira 1 pronta!A ferramenta já exige e-mail autorizado + código único.
6

A segunda barreira: trava por rede

Mesmo com e-mail válido, só entra quem estiver na rede autorizada.

Crie dentro da pasta da ferramenta uma pasta functions e, nela, um arquivo chamado _middleware.js com este texto. Troque apenas os IPs (IPv4 e prefixo IPv6) e o endereço oficial nas primeiras linhas.

// 1) TROQUE pelos IPs fixos ou prefixos de sub-rede (IPv4 e IPv6) da sua empresa
// Aceita IP exato ("203.0.113.10"), sub-rede IPv4 ("198.51.100.") ou prefixo IPv6 ("2804:14c:80:")
const REDES_PERMITIDAS = ["203.0.113.10", "198.51.100.", "2804:14c:80:"];
const HOST_OFICIAL = "orcamento-2026.pages.dev"; // ou "orcamento.suaempresa.com.br"

export async function onRequest(context) {
  const url = new URL(context.request.url);
  const ip = (context.request.headers.get("CF-Connecting-IP") || "").trim();
  const emailAutenticado = context.request.headers.get("Cf-Access-Authenticated-User-Email");

  // 2) Impede bypass por URLs de preview e exige autenticação prévia na Barreira 1
  if (HOST_OFICIAL && url.hostname !== HOST_OFICIAL && !emailAutenticado) {
    return new Response("Acesso negado: utilize o endereço oficial autenticado (403)",
      { status: 403 });
  }

  // 3) Confere se o IP (IPv4 ou IPv6) é exato ou pertence ao bloco da empresa
  const autorizado = REDES_PERMITIDAS.some(regra =>
    (regra.endsWith(".") || regra.endsWith(":")) ? ip.startsWith(regra) : ip === regra
  );
  if (!ip || !autorizado) {
    return new Response("Acesso negado: rede não autorizada (403)",
      { status: 403 });
  }

  // 4) Carrega a ferramenta + selos de segurança, isolamento e privacidade
  const r = await context.next();
  const s = new Response(r.body, r);
  s.headers.set("X-Content-Type-Options", "nosniff");
  s.headers.set("X-Frame-Options", "DENY");
  s.headers.set("Referrer-Policy", "no-referrer");
  s.headers.set("Permissions-Policy", "camera=(), microphone=(), geolocation=()");
  s.headers.set("Cache-Control", "no-store, no-cache, must-revalidate");
  s.headers.set("Content-Security-Policy",
    "default-src 'self' 'unsafe-inline' data: blob:; connect-src 'none'; object-src 'none'; base-uri 'self'; form-action 'none'; frame-ancestors 'none'");
  return s;
}

O selo mais importante

connect-src 'none' e form-action 'none' fazem o navegador proibir a ferramenta de enviar dados para a internet: a prova técnica de que os dados ficam com o usuário.

Se não abrir

Se o HTML carrega fontes ou scripts de fora, a política vai bloqueá-los. O correto é embutir tudo no arquivo (capítulo 4).

Publique de novo (Criar nova implantação) e teste: dentro da empresa abre; no 4G do celular deve aparecer “Acesso negado (403)”.

Time remoto ou erro 403 dentro da empresa?A trava por IP exige IP fixo. Se um usuário na empresa receber erro 403, verifique se a operadora roteou a conexão via IPv6 e adicione o prefixo IPv6 em REDES_PERMITIDAS. Para equipes remotas sem VPN com IP fixo, utilize a Barreira 1 combinada com validação de cabeçalho do Access.
7

Rotina, erros comuns e casos reais

Ferramenta no ar é o começo da gestão.

A rotina em 4 movimentos

Incluir alguém

Access → Applications → sua aplicação → Edit → Policies → adicione o e-mail. Vale na hora.

Remover alguém

Remova o e-mail da política e use Revoke existing tokens para derrubar sessões abertas.

Atualizar

Workers e Pages → projeto → nova implantação com o novo index.html. O endereço não muda.

Ver quem acessou

Zero Trust → Logs → Access: e-mail, data, hora, IP e resultado. Seu histórico para auditoria.

Erros comuns

SintomaSolução
Código não chegaConfira o e-mail na lista, olhe o spam/quarentena corporativa e peça novo código.
Abre sem pedir loginO endereço não está coberto pela aplicação ou é URL de preview. Vincule o hostname exato e teste em janela anônima.
403 para quem devia entrarO IP mudou ou saiu via IPv6. Confirme IPv4 e IPv6 em meuip.com.br e atualize a lista.
Página em brancoA política de segurança bloqueou algo externo. Embuta os recursos no HTML (capítulo 4).
Versão antiga apareceCache do navegador: aperte Ctrl + F5.

Onde isso já funciona

Controladoria & FP&A

Simulador de DRE e orçamento matricial distribuído a 30 gestores de centro de custo sem espalhar planilhas por e-mail.

RH & Remuneração

Calculadora de mérito e faixas salariais restrita ao comitê executivo, com revogação de sessão em 1 clique.

Comercial & Pricing

Simulador de margem e desconto mínimo travado no IP da filial, protegendo a tabela de custos contra vazamentos.

Consultoria & BPO

Entrega de diagnósticos interativos a clientes com login por OTP e log nominal de leitura para o sócio.

8

Seu plano de 7 dias

60 minutos para colocar a primeira ferramenta no ar. 7 dias para padronizar a governança do setor.

Sprint Técnico de 60 Minutos (Dia 1) × Governança de 7 DiasA execução técnica completa leva cerca de 1 hora (Min 0 a 10: auditar HTML; Min 10 a 25: criar conta Cloudflare com 2FA e subir HTML de teste; Min 25 a 45: ativar Access + OTP; Min 45 a 60: publicar _middleware.js e HTML definitivo). A tabela de 7 dias abaixo organiza a homologação corporativa com calma.
DiaTarefa
Dia 1Auditar o seu HTML (capítulo 4) e corrigir qualquer recurso externo ou credencial.
Dia 2Criar a conta Cloudflare funcional, ativar 2FA, cadastrar o 2º admin e publicar o HTML de teste (“Em configuração”).
Dia 3Ativar o Zero Trust Free, criar a aplicação Access e configurar a política de e-mails autorizados (Protocolo Zero Exposição).
Dia 4Subir o HTML definitivo, testar em janela anônima (e-mail autorizado e não autorizado) e validar a revogação de sessão.
Dia 5Levantar os blocos IPv4/IPv6 com a TI, publicar o _middleware.js e testar o bloqueio 403 pelo 4G do celular.
Dia 6Convidar 3 usuários-piloto (gestores de área) e coletar feedback de usabilidade e recebimento do PIN.
Dia 7Liberar para todos os gestores, conferir os logs de auditoria e documentar o processo (incluindo a Rota 2 para escala).

Checklist final

Glossário rápido

HTML autocontidoArquivo único com tudo dentro, que funciona sem internet.
Zero TrustModelo em que ninguém entra sem provar quem é.
One-time PINCódigo de uso único enviado por e-mail.
IP“Endereço” da sua conexão com a internet (IPv4 ou IPv6).
MiddlewareVigia que roda antes da ferramenta e aplica os selos CSP.
DeployPublicar ou republicar a ferramenta.
Implementação Acelerada · Individual & Equipes

Subiu a primeira ferramenta? Padronize todo o seu setor.

No curso e kit HTML Blindado Pro você acompanha tudo em vídeo, com artefatos prontos para copiar e colar, modelos executivos e suporte para homologar a arquitetura junto à TI e à diretoria.

5 Templates de Dashboards HTML Script _middleware.js Avançado (IPv4/IPv6 + Rota 2) Carta Técnica para Aprovação da TI / SecOps Suporte & Atualizações
Licença Individual
Ideal para analistas e gestores de Controladoria, FP&A, RH e Operações.
Pacote Corporativo (In-Company)
Licença para equipes, padronização de governança (Rota 2 Multi-Tenant) e mentoria de implantação.
Conheça o curso e destrave o Kit →
Acesso rápido (PDF/Impresso):
Kit HTML Blindado Pro
Aviso importanteMaterial educacional independente. A Cloudflare® é marca registrada de terceiros, sem vínculo comercial com este ebook; telas, menus, planos e limites gratuitos podem mudar. Confirme as condições vigentes na documentação oficial (developers.cloudflare.com/cloudflare-one) antes de implantar em ambiente crítico. A segurança final também depende das boas práticas da sua organização, da auditoria do código-fonte e da governança contínua dos acessos descritas neste guia. Ícones: Lucide (lucide.dev), licença ISC.