Proteside Docs

Configuração

Atributos do snippet, configuração remota, modos monitor e bloqueio, pausa e canais.

Quase toda a configuração do SDK é feita no dashboard e chega ao navegador pela configuração remota. O snippet só carrega a chave da loja e, quando há, as regras inline. Esta página mostra de onde vem cada ajuste e o que ele faz de fato no checkout.

Atributos do snippet

O shield.js lê os atributos data-* da própria tag <script>:

Propriedade

Tipo

Não existem outros atributos. O modo de proteção e o canal não são definidos por atributo: o modo vem do dashboard e o canal é a própria URL do shield.js. O atributo data-safe-url, de versões antigas do snippet, é ignorado.

Configuração remota

Ao iniciar, o SDK busca a configuração da loja em https://app.proteside.com/api/sdk/config. Quando as camadas divergem, vale esta ordem de prioridade:

  1. Configuração remota (o que está salvo no dashboard);
  2. Snippet (atributos data-* e regras inline window.__PROTE_INLINE__);
  3. Padrões do SDK.
ComportamentoDetalhe
Tempo limite2 segundos. Se a resposta não chegar, o SDK segue com o snippet e os padrões.
FalhaChave inválida, erro ou falta de rede não quebram a página: o SDK segue com os padrões locais.
Início das detecçõesOs módulos de detecção só começam depois da resposta (ou do tempo limite). Até lá, o bootstrapper guarda o que acontece e o SDK processa depois.
CacheA resposta pode ficar em cache por 60 segundos no navegador e na CDN.

Alterações podem levar mais de 60 segundos

O dashboard diz que as alterações chegam ao SDK em até 60 segundos. A CDN pode continuar servindo a resposta antiga por mais alguns minutos enquanto busca a nova, principalmente em lojas com pouco tráfego. Para testar uma mudança, aguarde alguns minutos e confira com Proteside.getStatus().

O que vem do dashboard

A maior parte fica em Configurações → Proteção do pagamento:

Tela Proteção do pagamento com recebedores confiáveis, modo de proteção, modo desenvolvedor, canal de release, listas de origens, métodos de pagamento, campos sensíveis e ajustes avançados
Ajuste no dashboardEfeito no SDK
Recebedores confiáveisHashes das chaves Pix, endereços cripto, VPAs UPI e bancos de boleto da loja. Veja Integridade de pagamento e Pix.
Modo de proteçãoMonitorar ou Bloquear. Veja abaixo.
Modo desenvolvedorPausa o SDK. Veja Pausa e modo desenvolvedor.
Canal de release do SDKSó informativo para o SDK. O canal efetivo é a URL colada no snippet. Veja Canais.
Origens de iframe esperadasHosts dos iframes legítimos de pagamento. Com a lista preenchida, o SDK alerta iframes de provedores fora dela, iframes sobrepostos aos esperados e campos de cartão digitáveis fora do iframe.
Containers GTM permitidosCom a lista preenchida, containers do Google Tag Manager fora dela são bloqueados. Veja o aviso abaixo.
Service workers permitidosCom a lista preenchida, service workers fora dela são reportados e, no modo Bloquear, removidos.
Métodos de pagamentoMétodos exibidos como monitorados. Não desliga a detecção. Veja Métodos de pagamento.
Campos sensíveisSeletores dos campos vigiados contra keyloggers e sobreposições.
Calibração (segundos)Tempo de aprendizado depois do carregamento (10 a 120 s, padrão 30).
Verificação de overlay (ms)Intervalo entre verificações de elementos sobrepostos (mínimo 500, padrão 2000).
Ordem de instalaçãoAvisar (alerta) envia INSTALLATION_ORDER_WARNING; Silenciar não envia o evento, mas installationOrderValid continua false.

As regras de Regras (bloquear ou permitir por Domínio ou URL do script) também vêm na configuração remota. Regras inativas não são enviadas. Listas vazias significam "sem restrição".

Regras por hash de conteúdo não são aplicadas no navegador

A tela de Regras oferece o alvo Hash de conteúdo, mas o SDK ignora essas regras: elas não bloqueiam nenhum script no checkout. Para impedir um script, use uma regra por Domínio ou URL do script.

Campos sensíveis

Por padrão, o SDK vigia estes seletores:

#card-number, #card-cvv, #card-expiry, #card-name,
[data-proteside-sensitive],
input[autocomplete="cc-number"],
input[autocomplete="cc-csc"]

Para incluir um campo próprio sem mexer no dashboard, marque-o com o atributo data-proteside-sensitive:

<input id="cpf" name="cpf" data-proteside-sensitive />

Se você desligar Usar a lista padrão da Proteside e informar uma lista própria, ela substitui a padrão. Inclua [data-proteside-sensitive] na sua lista se quiser manter o atributo funcionando.

Modo monitor e modo bloqueio

O modo é escolhido em Proteção do pagamento → Modo de proteção e chega ao SDK pela configuração remota.

O que acontece em qualquer modo

Regras e lista de GTM bloqueiam também no modo Monitorar

A tela descreve o modo Monitorar como "sem interferir na página" e diz que containers fora da lista são bloqueados "no modo Bloquear". No navegador, as regras de bloqueio (por domínio ou URL) e a lista de Containers GTM permitidos bloqueiam scripts nos dois modos. Se você quer só observar, não crie regras de bloqueio e deixe a lista de GTM vazia.

  • Um script inserido por JavaScript que casa com uma regra de bloqueio não chega a entrar na página. O SDK envia SCRIPT_BLOCKED.
  • Com a lista de GTM preenchida, googletagmanager.com/gtm.js e googletagmanager.com/gtag/js com ID fora da lista são barrados. O SDK envia GTM_CONTAINER_BLOCKED.
  • Uma regra Permitir que case com o script anula as regras de bloqueio.
  • cdn.proteside.com e app.proteside.com nunca são bloqueados.

A lista de GTM também barra GA4 e Google Ads

A lista aceita só IDs no formato GTM-XXXXXXX, mas o bloqueio vale também para gtag/js. Com a lista preenchida, qualquer tag do Google Analytics 4 (G-…) ou do Google Ads (AW-…) carregada por JavaScript, inclusive pelo próprio GTM, é bloqueada, e não há como incluir esses IDs na lista. Antes de ativar a lista, confirme se a loja usa GA4 ou Google Ads carregados dessa forma.

O que muda no modo Bloquear

Além de alertar, o SDK tenta neutralizar a adulteração:

DetecçãoAção no modo Bloquear
SCRIPT_INJECTION de script desconhecidoRemove a tag do script depois de detectar.
FORM_ACTION_HIJACKRestaura o action original do formulário.
OVERLAY_DETECTEDRemove o elemento sobreposto.
PIX_TAMPERED, UPI_TAMPERED, QR_TAMPERED, BOLETO_TAMPERED, CRYPTO_ADDRESS_SWAP (texto alterado)Reescreve o texto com o valor original capturado.
Recebedor fora da lista de confiáveisTroca o texto lido por ⚠︎ e marca o elemento com data-proteside-blocked="untrusted_recipient".
CLIPBOARD_HIJACKRegrava a área de transferência com o valor original.
SERVICE_WORKER_BLOCKEDRemove o registro do service worker.

Estas detecções só alertam, em qualquer modo: EXFILTRATION_ATTEMPT, KEYLOGGER_DETECTED, WEBSOCKET_EXFILTRATION, IFRAME_REPLACED, IFRAME_UNEXPECTED, CARD_FIELD_OUTSIDE_VAULT, AMOUNT_TAMPERED, SCRIPT_MODIFIED e FIELD_ACCESS.

Remover um script não desfaz o que ele já executou

Quando um script já entrou na página, retirar a tag não cancela a execução. Só o bloqueio antes da inserção, feito pelo bootstrapper com as regras, impede de fato que o script rode. Por isso, para um script indesejado, crie uma regra de bloqueio em vez de depender só do modo Bloquear.

No modo Bloquear, uma regra errada pode quebrar o checkout. Comece em Monitorar, revise os alertas por algumas semanas e teste o modo Bloquear em uma página de baixo tráfego antes de ativar em toda a loja.

Pausa e modo desenvolvedor

O SDK fica pausado quando:

  • o Modo desenvolvedor está ligado em Proteção do pagamento;
  • a assinatura não está vigente ou a loja não está ativa.

Pausado, o SDK envia um único PAGEVIEW marcado como pausado a cada carregamento de página (a tela fala em "1 pageview por sessão") e não inicia nenhum módulo de detecção. Proteside.getStatus().paused fica true e a Saúde do SDK mostra SDK pausado (modo desenvolvedor).

Regras inline continuam valendo no modo desenvolvedor

O bootstrapper aplica as regras gravadas no snippet (window.__PROTE_INLINE__) antes de saber que a loja está pausada. Com o modo desenvolvedor ligado, os scripts que casam com essas regras continuam bloqueados, mas sem nenhum evento no dashboard. Se precisar desativar um bloqueio durante a integração, remova a regra e recole o snippet.

Há também a pausa local, chamada pela própria página com Proteside.pause(). Ela vale só para aquele carregamento.

Canais

O canal de release (stable ou latest) é definido pela URL do shield.js no snippet. Veja Canais stable e latest.

Próximos passos

Nesta página