/ TL;DR

Segurança em Shopify no Brasil: app permissions, custom apps, PCI-DSS, LGPD, temas e webhooks. Checklist técnico completo para lojistas e devs.

Shopify representa 34% do GMV brasileiro em e-commerce SaaS em 2026 (dados ABComm/Statista). A plataforma resolve muita coisa — mas transfere para o lojista uma responsabilidade que quase ninguém assume: segurança da configuração e das integrações. Você não escreve o checkout, mas escreve o webhook. Você não hospeda o banco, mas dá permissão de leitura para 14 apps de marketing. É aí que mora o problema.

O modelo de responsabilidade compartilhada da Shopify

A Shopify assume:

  • PCI-DSS Nível 1 do checkout (você fica fora do escopo se não tocar em cartão).
  • Infra do storefront, CDN, WAF básico.
  • Patch de vulnerabilidades da plataforma core.

Você assume:

  • App permissions e escopo mínimo.
  • Custom apps e private apps: credenciais, escopo, rotação.
  • Temas: Liquid injection, XSS, dados expostos no HTML.
  • Webhooks: assinatura HMAC, replay, endpoint público.
  • LGPD: base legal, retenção, direitos do titular, transferência internacional.
  • Dados customer-facing fora da Shopify (CRM, ERP, e-mail marketing).

Riscos por vetor

1. App permissions descontroladas

Uma loja média brasileira instala 18 apps em 6 meses. Cada app pede um leque de permissões. O padrão do lojista: aceitar tudo.

O que auditar mensalmente:

read_customers        → risco alto se o app não é CRM legítimo
read_orders           → ok para logística, suspeito para "reviews"
write_products        → só apps de PIM/ERP
read_all_orders       → escopo estendido, exige justificativa
read_customer_events  → coleta comportamental (LGPD: base legal?)

Vá em Configurações → Apps → Permissões desenvolvedor e revise a lista. Apps abandonados que ainda têm token válido são um dos vetores mais comuns de vazamento em 2026 — o app foi vendido, credenciais foram para um novo dono e ninguém revisou.

2. Custom apps e Admin API

Custom apps geram um X-Shopify-Access-Token de longa duração. Se esse token vaza (por exemplo, num repositório público, num backup de env, num log do Sentry sem redação), atacante tem acesso completo à API Admin no escopo concedido.

Mitigação mínima:

  • Um token por finalidade. Não reutilize entre serviços.
  • Rotação semestral automática via POST /admin/api/2025-01/access_tokens.json.
  • Segredos jamais em variável de ambiente do tema — Liquid renderiza no HTML público.
  • Monitore chamadas de API por token. A Shopify expõe rate & IP telemetry na aba de logs; alerte em picos e origens novas.

3. Redução de escopo PCI-DSS: a armadilha do "sim, estou seguro"

Você fica fora do escopo PCI se:

  • Não hospeda o campo de cartão.
  • Não intermedia PAN (número do cartão) em nenhum momento.
  • Não armazena PAN em backup, log ou banco próprio.

Você volta para o escopo se:

  • Usa Shopify Payments com integração customizada que loga request body.
  • Faz "iframe wrapping" com JavaScript que lê o input antes do submit (Magecart-style).
  • Um app instalado injeta script de terceiros no checkout (Shopify Plus permite; Standard não).

A auditoria de terceiros no checkout.liquid (Plus) é obrigatória. Um script de tracking mal configurado pode reintroduzir você ao escopo PCI e fazer o custo de compliance saltar de zero para R$ 200 mil/ano.

4. Temas: o vetor esquecido

Temas Liquid renderizam server-side e produzem HTML público. Padrões perigosos:

{{ customer.email }}                <!-- ok, dentro de área logada -->
{{ order.customer.email }}          <!-- vazamento no order-status page -->
{{ shop.metafields.private.token }} <!-- token exposto no HTML -->
{% raw %}
<script>
  var user = {{ customer | json }};  <!-- serializa tudo, inclusive campos privados -->
</script>
{% endraw %}

XSS via nome de produto ou review não sanitizado também é comum. A Shopify escapa por padrão em muitos filtros, mas | html_safe e | script_tag desligam a proteção.

5. Webhooks: HMAC e replay

Webhook não validado é o novo endpoint aberto. Toda integração séria precisa:

const crypto = require('crypto');

function verifyShopifyWebhook(req, secret) {
  const hmac = req.headers['x-shopify-hmac-sha256'];
  const digest = crypto
    .createHmac('sha256', secret)
    .update(req.rawBody, 'utf8')
    .digest('base64');
  return crypto.timingSafeEqual(
    Buffer.from(digest),
    Buffer.from(hmac)
  );
}

E ainda: proteja contra replay usando X-Shopify-Webhook-Id como chave de idempotência com TTL de 24h. Sem isso, atacante que captura um webhook legítimo consegue reexecutá-lo indefinidamente.

LGPD aplicada à Shopify Brasil

Pontos que a maioria dos lojistas erra:

  • Base legal para marketing: consentimento explícito, não legítimo interesse. O checkbox "quero receber ofertas" precisa vir desmarcado.
  • Transferência internacional: dados de clientes ficam nos EUA/Canadá. Você precisa da cláusula contratual padrão e informar ao titular na política de privacidade.
  • Direito à eliminação: a API de customer redaction da Shopify existe (/admin/api/customers/{id}/redact). Use-a em 15 dias após pedido do titular.
  • Cookies e pixel: banner de consentimento é obrigatório para tracking. A Shopify Brasil habilita banner nativo desde 2024 — habilite.

Consulte o checklist LGPD de 15 pontos para o resto.

Checklist rápido de segurança Shopify BR

  • [ ] Revisão trimestral de apps instalados e permissões.
  • [ ] Custom apps com tokens rotacionados semestralmente.
  • [ ] Nenhum segredo em tema Liquid ou metafield público.
  • [ ] Webhooks com HMAC + idempotência.
  • [ ] Banner de cookies ativo, marketing por opt-in.
  • [ ] MFA obrigatório em todas as contas de staff.
  • [ ] IP allowlist no Admin (Shopify Plus).
  • [ ] Log de acessos exportado para SIEM externo.
  • [ ] Testes de vulnerabilidade nos endpoints públicos (webhooks, storefront custom, headless).
  • [ ] Contrato de operador com fornecedores brasileiros de app.

A Varredura testa continuamente endpoints públicos, webhooks e integrações headless de lojas Shopify contra o OWASP Top 10, JWT mal implementado e SSRF — sem tocar em código-fonte nem quebrar o tema. Rode agora.

EV

Equipe Varredura

Time de pesquisa de segurança · Varredura

Sua app em produção passa por essa análise?

Rode uma varredura autônoma em ~60 segundos. Sem cadastro.

Analisar minha aplicação →