Como verificar a segurança do seu site sem invadir nada
Verificações passivas de segurança para lojas virtuais: certificado TLS, HSTS, CSP, nosniff, cookies, conteúdo misto, jQuery antigo, security.txt e DMARC.
Equipe editorial FixReports12 min de leitura
Você consegue verificar boa parte da configuração de segurança de uma loja virtual pelo lado de fora, lendo o que o site já envia a todo visitante: o certificado TLS, os redirecionamentos, os cabeçalhos de resposta HTTP, os cookies, os scripts que ele carrega e os registros DNS públicos. Essas verificações passivas não enviam tráfego de ataque nem exigem login, por isso não colocam na loja mais carga do que uma visita normal. Elas encontram falhas de configuração, como um certificado prestes a vencer, falta de HSTS, cookies inseguros, conteúdo misto ou uma versão do jQuery com falhas conhecidas. Elas não são um teste de invasão (pentest) e não conseguem provar que uma loja é segura.
Pontos principais
- Os certificados TLS publicamente confiáveis emitidos desde 15 de março de 2026 podem ter validade de no máximo 200 dias, limite que cai para 100 dias em março de 2027 e para 47 dias em março de 2029 (CA/Browser Forum (abre em uma nova aba)).
- Os navegadores ignoram o cabeçalho HSTS quando ele é enviado por HTTP sem criptografia (MDN (abre em uma nova aba)).
- A diretiva
frame-ancestorsda CSP não funciona em uma tag<meta>; ela precisa ser enviada como cabeçalho de resposta (MDN (abre em uma nova aba)). - As versões do jQuery anteriores à 3.5.0 são afetadas por duas vulnerabilidades de XSS, e a CISA incluiu uma delas, a CVE-2020-11023, no seu catálogo Known Exploited Vulnerabilities em 23 de janeiro de 2025 (NVD (abre em uma nova aba)).
- Um arquivo
security.txtprecisa ter os camposContacteExpirese ficar em/.well-known/security.txt(RFC 9116 (abre em uma nova aba)).
O que conta como verificação de segurança passiva?
Uma verificação passiva só lê o que o site ou o DNS dele devolvem a uma requisição comum.
Isso significa carregar páginas públicas, ler o certificado e os cabeçalhos de resposta, listar os cookies e os scripts que uma página define e consultar registros DNS públicos. Uma verificação passiva não tenta adivinhar senhas, não envia payloads de injeção, não sonda URLs de administração e não faz varredura de portas. Tudo o que vem a seguir pode ser feito com um navegador, curl, openssl e dig.
Como verificar o certificado TLS e a validade dele?
Leia diretamente as datas e os nomes do certificado e garanta que a renovação seja automática.
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null \
| openssl x509 -noout -subject -issuer -dates
Confira se o notAfter está bem distante no futuro, se o certificado cobre tanto example.com quanto www.example.com, caso você use os dois (o visualizador de certificados do navegador lista os nomes), e se o navegador não mostra nenhum alerta. A validade dos certificados está diminuindo conforme os Baseline Requirements do CA/Browser Forum (seção 6.3.2, versão 2.3.1 em outubro de 2026), após a Ballot SC-081v3 (abre em uma nova aba), aprovada em 11 de abril de 2025:
| Certificado emitido | Validade máxima |
|---|---|
| Antes de 15 de março de 2026 | 398 dias |
| De 15 de março de 2026 a 14 de março de 2027 | 200 dias |
| De 15 de março de 2027 a 14 de março de 2029 | 100 dias |
| A partir de 15 de março de 2029 | 47 dias |
Prazos de validade curtos tornam a renovação manual arriscada, então confirme que a sua hospedagem ou a sua ferramenta de certificados faz a renovação automaticamente. Confirme também que o HTTP sem criptografia redireciona para HTTPS:
curl -sI http://example.com/ | grep -i -E "^HTTP|^location"
O esperado é uma resposta 301 (ou 308) com um cabeçalho location que comece com https://.
Quais cabeçalhos de segurança uma loja virtual deve enviar?
Um pequeno conjunto de cabeçalhos de resposta bloqueia ataques comuns no navegador a um custo quase nulo.
| Cabeçalho | O que faz | Valor típico | Fonte |
|---|---|---|---|
Strict-Transport-Security | Diz aos navegadores para usar só HTTPS e impede que os usuários ignorem erros de certificado | max-age=31536000; includeSubDomains | MDN (abre em uma nova aba) |
Content-Security-Policy: frame-ancestors | Controla quais sites podem incorporar as suas páginas, o que protege contra clickjacking | frame-ancestors 'self' | MDN (abre em uma nova aba) |
X-Frame-Options | Controle de enquadramento mais antigo; a OWASP diz que o frame-ancestors o torna obsoleto nos navegadores compatíveis | DENY ou SAMEORIGIN | OWASP (abre em uma nova aba) |
X-Content-Type-Options | Impede o MIME sniffing e bloqueia scripts e folhas de estilo servidos com o tipo errado | nosniff | MDN (abre em uma nova aba) |
Referrer-Policy | Limita quanto das suas URLs é enviado a outros sites | strict-origin-when-cross-origin | OWASP |
X-XSS-Protection | Cabeçalho do filtro de XSS do navegador; a OWASP diz que ele pode criar vulnerabilidades de XSS em sites que, sem ele, seriam seguros | Não defina, ou use 0 | OWASP |
Veja o que a sua loja envia:
curl -sI https://example.com/
Strict-Transport-Security: max-age=31536000; includeSubDomains
Content-Security-Policy: frame-ancestors 'self'
X-Content-Type-Options: nosniff
Referrer-Policy: strict-origin-when-cross-origin
Dois cuidados. O includeSubDomains bloqueia qualquer subdomínio que só funcione por HTTP, então verifique os subdomínios antes. O preload do HSTS exige max-age de pelo menos 31536000 e includeSubDomains, então só adicione preload quando todos os subdomínios estiverem prontos para HTTPS. Uma CSP completa que restrinja os scripts vale a pena, mas a OWASP observa que ela é complexa de configurar e de manter, e lojas com muitos apps precisam testá-la com cuidado.
Seus cookies usam Secure, HttpOnly e SameSite?
Os cookies de sessão e de carrinho devem ter os três atributos, e você pode vê-los nos cabeçalhos de resposta Set-Cookie.
| Atributo | Efeito (segundo o MDN (abre em uma nova aba)) | Onde importa |
|---|---|---|
Secure | Enviado só por HTTPS; sites em HTTP sem criptografia não conseguem defini-lo | Todos os cookies de uma loja em HTTPS |
HttpOnly | O JavaScript não consegue lê-lo por document.cookie, o que ajuda contra XSS | Sessões de login e carrinhos |
SameSite=Lax ou Strict | Limita quando o cookie é enviado em requisições entre sites | Sessões; Strict é adequado para cookies de autenticação e de carrinho |
SameSite=None | Enviado em requisições entre sites; precisa ser combinado com Secure | Só recursos incorporados de terceiros que precisem dele |
Se nenhum atributo SameSite for definido, os navegadores tratam o cookie como Lax. Os cookies que os seus próprios scripts precisam ler não podem ser HttpOnly, então concentre-se nos que identificam um cliente logado ou um administrador.
curl -sI https://example.com/ | grep -i "^set-cookie"
As ferramentas de desenvolvedor do navegador mostram as mesmas informações, incluindo os cookies definidos por scripts depois que a página carrega.
Como encontrar conteúdo misto?
Conteúdo misto é qualquer recurso carregado por HTTP em uma página servida por HTTPS, e o console do navegador lista esses recursos.
O MDN (abre em uma nova aba) divide o conteúdo misto em dois grupos. Imagens, áudio e vídeo são “atualizáveis” (upgradable): os navegadores os solicitam automaticamente por HTTPS. Scripts, folhas de estilo, iframes, fontes e requisições fetch() são “bloqueáveis” (blockable): os navegadores os bloqueiam, o que quebra tudo o que dependia deles. As requisições atualizadas para um endereço IP puro, sem nome de domínio, também são bloqueadas.
Para encontrá-lo, abra o console nos seus templates principais (página inicial, coleção, produto, carrinho) e procure http:// no código do tema, no conteúdo das páginas e nas configurações dos apps. A Central de Ajuda da Shopify diz que qualquer página da loja com um recurso que não seja entregue por HTTPS é considerada insegura (abre em uma nova aba) e recomenda hospedar os recursos na Shopify ou servi-los por HTTPS. No WooCommerce, verifique o conteúdo de posts antigos e as opções do tema se o site já funcionou em http://.
Como identificar bibliotecas JavaScript desatualizadas com CVEs conhecidas?
Liste as bibliotecas que cada página carrega, leia as versões delas e compare-as com a National Vulnerability Database (NVD).
Comece pelo jQuery. No console do navegador, $.fn.jquery retorna a versão carregada (API do jQuery (abre em uma nova aba)). Versões que merecem alerta:
| CVE | Versões afetadas | Problema | Pontuação na NVD (v3.1) |
|---|---|---|---|
| CVE-2020-11022 (abre em uma nova aba) | Da 1.12.0 até antes da 3.5.0 | Passar HTML não confiável a métodos como .html() ou .append() pode executar código | 6,1 (média) |
| CVE-2020-11023 (abre em uma nova aba) | Da 1.0.3 até antes da 3.5.0 | O mesmo, para HTML que contém elementos <option>; no catálogo KEV da CISA desde 23 de janeiro de 2025 | 6,1 (média) |
| CVE-2019-11358 (abre em uma nova aba) | Antes da 3.4.0 | Poluição de protótipo (prototype pollution) por meio de jQuery.extend(true, ...) | 6,1 (média) |
Os dois problemas de 2020 foram corrigidos no jQuery 3.5.0. Uma versão vulnerável significa que o código com a falha está presente; se ela pode ser explorada depende de como o site passa dados para esse código. O WordPress inclui o jQuery 3.5.1 desde a versão 5.6 (abre em uma nova aba), então um jQuery antigo em uma loja WooCommerce indica um WordPress desatualizado ou um tema ou plugin que carrega a própria cópia. Na Shopify, verifique os arquivos do tema e os apps que injetam scripts.
O que é o security.txt e a sua loja precisa de um?
É um arquivo de texto simples que diz aos pesquisadores de segurança como relatar uma vulnerabilidade a você.
A RFC 9116 (abre em uma nova aba) (abril de 2022, uma RFC informativa, então segui-la é voluntário) diz que o arquivo deve ser servido por HTTPS em /.well-known/security.txt como text/plain. Contact e Expires são obrigatórios, e a RFC recomenda uma data em Expires a menos de um ano no futuro.
Contact: mailto:security@example.com
Expires: 2027-09-30T23:00:00.000Z
Preferred-Languages: en
Policy: https://example.com/security-policy
No WooCommerce, você pode colocar o arquivo no seu servidor. Em uma plataforma hospedada, verifique se é possível publicar um arquivo nesse caminho; se não for, um contato de segurança bem identificado na sua página de contato já ajuda.
Como o DMARC protege a sua loja contra falsificação de e-mail?
O DMARC permite pedir aos provedores de e-mail que coloquem em quarentena ou rejeitem as mensagens que usam o seu domínio no endereço do remetente (From) sem passar em SPF ou DKIM alinhados.
Um registro com p=none só coleta relatórios; ele não impede e-mails falsificados. Os clientes esperam receber confirmações de pedido e redefinições de senha do seu domínio, então vale a pena bloquear uma mensagem de phishing que exiba exatamente o seu domínio. Verifique a sua política com dig +short TXT _dmarc.example.com e consulte a RFC 9989 (abre em uma nova aba) para ver a especificação. O DMARC não cobre domínios parecidos, só o domínio que publica o registro.
O que a Shopify gerencia e o que você controla no WooCommerce?
A Shopify opera os servidores por trás das vitrines das lojas, enquanto uma loja WooCommerce auto-hospedada deixa as configurações do servidor com você e com a sua hospedagem.
| Verificação | Shopify | WooCommerce (auto-hospedado) |
|---|---|---|
| Certificado TLS | Gratuito para todos os domínios adicionados à Shopify (abre em uma nova aba); pode levar até 48 horas para domínios de terceiros | Sua hospedagem ou a sua própria configuração |
| Redirecionamento de HTTP para HTTPS | Plataforma | Configurações do servidor web, da CDN ou da hospedagem |
| Cabeçalhos de segurança | Enviados pelos servidores da Shopify | Servidor web, CDN ou um plugin |
| Flags de cookies | Os cookies da própria Shopify são definidos pela plataforma; os cookies de apps e do tema são responsabilidade sua | Núcleo do WordPress, plugins e servidor |
| Conteúdo misto e bibliotecas JS | Seu tema, conteúdo e apps | Seu tema, conteúdo e plugins |
| security.txt e DMARC | Seu domínio e DNS | Seu domínio e DNS |
Quando verificamos várias vitrines hospedadas na Shopify em outubro de 2026, as respostas incluíam HSTS com max-age de cerca de 91 dias, X-Content-Type-Options: nosniff e uma CSP com upgrade-insecure-requests, enquanto o frame-ancestors variava de uma loja para outra. A Shopify diz que tem certificação de conformidade com o PCI DSS Nível 1 (abre em uma nova aba). O seu tema e os apps instalados continuam sendo responsabilidade sua.
No WooCommerce, o guia de proteção (hardening) (abre em uma nova aba) do WordPress recomenda manter o WordPress e os plugins atualizados, excluir os plugins que você não usa e perguntar à sua hospedagem quais precauções de segurança ela adota.
Por que isso não é um teste de invasão?
Um teste de invasão tenta ataques de forma ativa; as verificações passivas só observam.
A NIST SP 800-115 define o teste de invasão como um teste de segurança em que os avaliadores imitam ataques reais para encontrar formas de contornar os recursos de segurança de um sistema (glossário do NIST (abre em uma nova aba)). As verificações passivas não enxergam falhas no lado do servidor em plugins, senhas de administrador fracas ou reutilizadas, falta de autenticação em dois fatores, falhas de controle de acesso nem código vulnerável que nunca aparece no código-fonte da página. Use essas verificações como uma linha de base que você pode repetir a qualquer momento. Para uma garantia mais profunda, contrate um teste de invasão com escopo por escrito, em sistemas que sejam seus ou que você tenha autorização para testar.
Uma análise gratuita faz uma primeira passada pela sua loja. O Relatório de Segurança do Site cobre as verificações passivas deste artigo, do TLS e dos redirecionamentos aos cabeçalhos, cookies, conteúdo misto, bibliotecas desatualizadas, security.txt e DMARC, com correções para cada problema encontrado. Como qualquer análise passiva, ele não pode garantir que uma loja esteja segura.
Perguntas frequentes
As verificações de segurança passivas colocam a minha loja em risco?
Não mais do que uma visita normal. Elas solicitam as mesmas páginas públicas e os mesmos registros DNS que qualquer navegador ou servidor de e-mail solicitaria, e não tentam fazer login nem enviar payloads de ataque.
Posso adicionar cabeçalhos de segurança na Shopify?
Os cabeçalhos de resposta da vitrine vêm dos servidores da Shopify, então entre em contato com o Suporte da Shopify se faltar algum de que você precise. Uma tag <meta> de CSP no seu tema pode adicionar algumas diretivas, mas o MDN observa que o frame-ancestors não é aceito em <meta>.
Uma versão antiga do jQuery significa que a minha loja foi invadida?
Não. Significa que um código com vulnerabilidades conhecidas está sendo carregado, o que aumenta o risco se o site passar HTML não confiável aos métodos afetados. Atualize o jQuery ou remova o tema ou plugin que o carrega.
Por quanto tempo um certificado TLS pode ser válido agora?
Os certificados publicamente confiáveis emitidos a partir de 15 de março de 2026 podem ter validade de no máximo 200 dias. O limite cai para 100 dias a partir de 15 de março de 2027 e para 47 dias a partir de 15 de março de 2029.
O arquivo security.txt é obrigatório?
A RFC 9116 é uma RFC informativa, então publicar o arquivo é voluntário segundo o padrão. Ele é barato de publicar e dá aos pesquisadores uma forma clara de entrar em contato com você.
Uma análise passiva sem problemas significa que a minha loja é segura?
Não. Ela mostra que a configuração pública parece correta. Vulnerabilidades no servidor, segurança das contas e falhas na lógica de negócio precisam de outros testes.
Fontes
- Baseline Requirements for the Issuance and Management of Publicly-Trusted TLS Server Certificates, version 2.3.1 (abre em uma nova aba), CA/Browser Forum, 4 de outubro de 2026
- Ballot SC-081v3: Introduce Schedule of Reducing Validity and Data Reuse Periods (abre em uma nova aba), CA/Browser Forum, 11 de abril de 2025
- Strict-Transport-Security (abre em uma nova aba), MDN Web Docs, modificado pela última vez em 11 de setembro de 2026
- CSP: frame-ancestors (abre em uma nova aba), MDN Web Docs, modificado pela última vez em 27 de agosto de 2026
- X-Content-Type-Options (abre em uma nova aba), MDN Web Docs, modificado pela última vez em 17 de março de 2026
- Using HTTP cookies (abre em uma nova aba), MDN Web Docs, modificado pela última vez em 17 de setembro de 2026
- Mixed content (abre em uma nova aba), MDN Web Docs, modificado pela última vez em 15 de agosto de 2026
- HTTP Security Response Headers Cheat Sheet (abre em uma nova aba), OWASP Cheat Sheet Series, acesso em 22 de outubro de 2026
- CVE-2020-11022 (abre em uma nova aba), NIST National Vulnerability Database, publicado em 29 de abril de 2020
- CVE-2020-11023 (abre em uma nova aba), NIST National Vulnerability Database, publicado em 29 de abril de 2020
- CVE-2019-11358 (abre em uma nova aba), NIST National Vulnerability Database, publicado em 20 de abril de 2019
- .jquery (abre em uma nova aba), documentação da API do jQuery, acesso em 22 de outubro de 2026
- Updating core jQuery to version 3, part 2 (abre em uma nova aba), Make WordPress Core, 5 de novembro de 2020
- RFC 9116: A File Format to Aid in Security Vulnerability Disclosure (abre em uma nova aba), IETF, abril de 2022
- RFC 9989: Domain-Based Message Authentication, Reporting, and Conformance (DMARC) (abre em uma nova aba), IETF, maio de 2026
- Enabling secure connections to your Shopify store (abre em uma nova aba), Central de Ajuda da Shopify, acesso em 22 de outubro de 2026
- Security (abre em uma nova aba), Shopify, acesso em 22 de outubro de 2026
- Hardening WordPress (abre em uma nova aba), WordPress Developer Resources, acesso em 22 de outubro de 2026
- Penetration testing (glossary) (abre em uma nova aba), NIST Computer Security Resource Center, citando a NIST SP 800-115 (setembro de 2008), acesso em 22 de outubro de 2026
Todos os guias
- Checklist da página de produto: o que impede a compraChecklist da página de produto com base na Baymard e na WebAIM: preço, frete e devolução, fotos, avaliações, compra no celular, pop-ups, busca e teclado.
- Checklist de SEO técnico para lojas Shopify e WooCommerceSEO técnico para lojas Shopify e WooCommerce: noindex, robots.txt, sitemap, títulos, H1, canonical, dados estruturados, Open Graph e texto alternativo.
- Checklist WCAG 2.2 AA de acessibilidade para lojas virtuaisChecklist WCAG 2.2 AA para Shopify e WooCommerce por tipo de página: texto alternativo, contraste, rótulos, teclado, foco, tamanho do alvo e novos critérios.