Ir diretamente para o conteúdo

Definições de cookies

Escolha que tipos de cookies permite. Pode alterar a sua escolha a qualquer momento em Definições de cookies, no fundo de cada página. Política de privacidade

Necessários

Sempre ativos

Necessários para iniciar sessão, manter o seu carrinho e memorizar as suas escolhas. Estão sempre ativos.

Que cookies?
  • weboke_sessie, weboke_klant, weboke_remember: a sua sessão e manter a sessão iniciada
  • weboke_basket: o seu carrinho
  • wkBtwIncl: mostrar preços com ou sem IVA
  • wok_cookies: a sua escolha de cookies, 12 meses

Mede que anúncio leva a uma visita ou encomenda, para não pagarmos por anúncios que não dão resultado.

Que cookies?
  • Google Ads via Google Tag Manager (_gcl_au, _gcl_aw), até 90 dias
  • OpenAI Ads, anúncios no ChatGPT
  • wok_aff: através de que parceiro chegou até nós (programa de afiliados), 60 dias

4,6

País e idioma

Cada país tem o seu próprio site, com os preços e o IVA desse país.

Ver

Segurança dos pagamentos: PCI e fraude

Módulo 6: Gestão e segurança · Tempo de leitura: 11 minutos

Objetivo de aprendizagem: No final desta lição, saberá explicar porque é que uma loja nunca trata ela própria dados de cartão, o que significam o PCI DSS e o SAQ A para uma pequena loja, como proteger a página de finalização de compra e como reconhecer e limitar a fraude e o card testing.

Conceitos-chave: PCI DSS, dados de cartão, fornecedor de pagamentos, redirecionamento para a página de pagamento, formulário de pagamento incorporado (iframe), SAQ A, scripts na página de finalização de compra, e-skimming, https, HSTS, card testing, rate limiting, captcha, 3-D Secure, estorno (chargeback), risco de fraude

Os dados de cartão não pertencem à sua loja

Um número de cartão de crédito, a data de validade e o código de segurança valem ouro para os criminosos. Quem os guarda ou transmite fica abrangido pelo PCI DSS (Payment Card Industry Data Security Standard), a norma de segurança das empresas de cartões. A versão atual é a v4.0.1. Para uma empresa que trata ela própria dados de cartão, isso representa um conjunto considerável de requisitos: segmentação da rede, registos, análises, testes por uma entidade reconhecida.

Uma pequena loja não quer estar nessa situação, nem precisa. A regra fixa: os dados de cartão nunca entram na sua loja. O cliente introduz-os junto do seu fornecedor de pagamentos (Mollie, Stripe, PayPal, WooPayments ou outro, lição 4.4). Depois, a loja apenas recebe a informação: pago ou não, com uma referência. Nenhum número de cartão, nenhum código. Isso significa também:

  • nunca criar um campo de formulário próprio para números de cartão, nem sequer "só para uma encomenda por telefone";
  • nunca aceitar dados de cartão por e-mail, chat ou telefone e registá-los numa nota da encomenda;
  • não utilizar nenhum plugin que guarde dados de cartão na sua própria base de dados.

Redirecionar ou incorporar: SAQ A

As pequenas lojas demonstram que cumprem o PCI DSS com um SAQ (Self-Assessment Questionnaire, um questionário). Por vezes, o seu fornecedor de pagamentos pede-o. O mais leve é o SAQ A, para lojas que externalizam totalmente o pagamento. Há duas formas de isto funcionar numa loja:

  1. Redirecionar. Depois de "encomendar", o cliente vai para a página de pagamento do fornecedor e depois regressa. A loja nunca vê os dados de cartão, nem sequer a página onde são introduzidos.
  2. Formulário incorporado. O campo de pagamento está na sua página de finalização de compra, mas é um iframe (um fragmento de página) do fornecedor. Os dados de cartão vão diretamente do navegador para o fornecedor.

Desde 31 de março de 2025 aplica-se uma nova versão do SAQ A. Esta contém uma condição que afeta sobretudo a segunda forma: quem utiliza um formulário incorporado tem de confirmar que o seu site não é vulnerável a ataques com scripts que possam afetar o sistema de pagamento. O contexto é o e-skimming: um script malicioso na sua página de finalização de compra que lê o que o cliente escreve, ou que sobrepõe um campo de pagamento falso ao verdadeiro. Quem redireciona para a página do fornecedor não está abrangido por essa condição. Pergunte ao seu fornecedor de pagamentos que SAQ se aplica à sua integração; ele sabe exatamente.

O que deve fazer em qualquer caso:

  • Mantenha a página de finalização de compra despojada. Qualquer script nessa página pode, em princípio, ler o que é escrito: widgets de chat, gestores de etiquetas (tag managers), píxeis de publicidade, ferramentas de testes A/B. Carregue na página de finalização de compra apenas o necessário para o pagamento. Um tag manager nessa página é uma porta através da qual qualquer pessoa com acesso a essa conta pode adicionar scripts.
  • Poucos plugins, e atualizados (lição 6.2). A maior parte do e-skimming em WordPress entra através de uma falha num plugin ou de uma palavra-passe de administrador roubada.
  • Uma Content-Security-Policy (um cabeçalho que indica de que domínios podem vir scripts) limita os danos se, ainda assim, algo entrar. É trabalho para alguém que o saiba testar; uma CSP errada estraga o seu botão de pagamento.

https e HSTS na página de finalização de compra

Que toda a sua loja funcione através de https é evidente (curso de WordPress, lição 3.1). Para a página de finalização de compra, juntam-se duas coisas:

  • o http tem de redirecionar de imediato para https, com um redirecionamento permanente (301 ou 308). Um cliente que alguma vez escreva http://shop.example.com/afrekenen/ não pode receber uma página não cifrada.
  • O HSTS (HTTP Strict Transport Security) é um cabeçalho com o qual instrui o navegador a abrir o seu site, durante algum tempo, apenas através de https. Assim evita que alguém numa rede wi-fi aberta intercete o primeiro pedido não cifrado. Um max-age de pelo menos 180 dias é um mínimo habitual. Ative o HSTS apenas quando tudo, incluindo os subdomínios que abranger, funcionar através de https: um navegador que tenha visto o HSTS recusa depois o http. O artigo KB 6752 explica como o configurar.

Conteúdo misto (um script ou uma folha de estilos via http numa página https) na página de finalização de compra é especialmente perigoso: é precisamente um ficheiro desses que pode ser substituído pelo caminho.

Card testing

No card testing, os criminosos usam a sua loja para experimentar números de cartão roubados. Fazem automaticamente centenas de pequenas encomendas. Cada pagamento bem-sucedido diz-lhes que um cartão funciona. O resultado para si é um monte de encomendas falhadas, custos por transação, estornos e, no pior dos casos, um fornecedor de pagamentos que bloqueia a sua conta.

Como reconhecer: muitas encomendas em pouco tempo, frequentemente do mesmo produto barato, com nomes diferentes mas moradas iguais ou estranhas, e muitas com o estado Falhada.

Como limitar:

  • Rate limiting (um limite ao número de pedidos por período de tempo). A Store API do WooCommerce, utilizada pelos blocos do carrinho e da finalização de compra, tem rate limiting incorporado, mas este está desativado por predefinição. Em WooCommerce > Configurações > Avançado > Funcionalidades pode ativar "Rate limiting Checkout block and Store API" para a realização de encomendas. Com código (um filtro) pode definir o limite; a predefinição é de 25 pedidos por 10 segundos e só contam as encomendas e outras ações de escrita. Se a sua loja estiver atrás de um proxy ou CDN, o suporte de proxy tem de estar ativo; caso contrário, todos os visitantes contam como um só.
  • Um captcha ou uma barreira semelhante na finalização da compra. O próprio WooCommerce afirma que o rate limiting e o captcha funcionam melhor em conjunto: os atacantes mudam frequentemente de endereço IP.
  • As configurações do seu fornecedor de pagamentos. Os fornecedores têm os seus próprios filtros de fraude e limites. Ative-os e veja o que reportam.
  • O 3-D Secure (a confirmação adicional na aplicação do banco, parte da autenticação forte do cliente na UE) dificulta a vida aos criminosos e, em caso de litígio, transfere frequentemente a responsabilidade para o banco do titular do cartão.

Outras fraudes

Nem toda a fraude é automatizada. Sinais que, somados, justificam esperar um pouco antes de enviar:

  • morada de faturação e morada de entrega em países diferentes, ou uma morada de entrega num serviço de reencaminhamento;
  • uma primeira encomenda apenas com produtos caros e fáceis de revender, com envio urgente;
  • várias tentativas com cartões diferentes;
  • um cliente que, depois de pagar, pede para enviar para outra morada.

Um estorno (chargeback) é a anulação de um pagamento com cartão pelo banco do cliente. Perde o montante, muitas vezes com custos, e o produto já foi. Por isso, guarde provas de envio e de entrega. Um pagamento iDEAL (Países Baixos) não podia até agora ser anulado desta forma; como funciona com a Wero, saberá através do seu fornecedor de pagamentos (lição 4.4). Em Portugal, os métodos de pagamento habituais são MB WAY, referência Multibanco, cartão e PayPal; pergunte também ao seu fornecedor como funcionam as contestações em cada um deles.

Resumo

  • Os dados de cartão nunca entram na sua loja: nem em formulários, nem em notas, nem em e-mails. É o fornecedor de pagamentos que os trata.
  • Redirecionar para a página de pagamento ou usar um campo incorporado do fornecedor mantém-no no questionário PCI mais leve (SAQ A); com um campo incorporado, a sua página de finalização de compra tem de estar protegida contra ataques com scripts.
  • Mantenha a página de finalização de compra despojada, através de https com um 301 a partir de http e com HSTS de pelo menos 180 dias.
  • O card testing limita-se com rate limiting (desativado por predefinição), um captcha e os filtros do seu fornecedor.
  • Esteja atento a sinais de fraude e guarde provas de entrega contra estornos.

Questionário

1. Um cliente telefona e quer transmitir os dados do cartão para uma encomenda. O que faz?



2. Porque é que um tag manager na página de finalização de compra é um risco?



3. Numa noite chegam 300 encomendas de um único produto de € 2, a maioria com o estado Falhada. O que está provavelmente a acontecer?



4. O rate limiting da Store API está ativo por predefinição?



Exercício

Exercício A6.3: A sua página de finalização de compra é segura? Introduza o endereço da sua loja e o endereço da sua página de finalização de compra. O programa verifica o certificado, pede a página de finalização de compra via http (sem seguir redirecionamentos) e via https (com o carrinho vazio, nada é encomendado). Verde se o certificado for válido, se o http redirecionar para https com 301 ou 308, se o cabeçalho Strict-Transport-Security tiver um max-age de pelo menos 180 dias, se não houver conteúdo misto e se, no máximo, cinco outros domínios carregarem scripts na página (o programa mostra-os). Laranja se não houver HSTS ou se for demasiado curto, se houver um redirecionamento temporário (302 ou 307), mais de cinco domínios de scripts ou um tag manager, ou um campo de número de cartão no HTML da própria loja em vez de no fornecedor. Vermelho se o https ou o certificado não estiverem corretos, se o http não redirecionar, ou se scripts ou folhas de estilos forem carregados via http. Nunca guarde dados de cartão. Esta verificação só vê o que está na página sem carrinho.

Pergunta para si (não verificada): o seu plugin de pagamento redireciona para o fornecedor, ou o campo de pagamento está na sua página? Que SAQ diz o seu fornecedor que se aplica?

Um visto verde significa que esta verificação está correta neste momento, não que a sua loja é segura.

Exercício A6.3: A sua página de finalização de compra é segura?



O que preenche e o que encontramos não ficam guardados. O seu navegador memoriza as suas respostas e se concluiu o exercício com sucesso. Se tiver sessão iniciada, guardamos apenas que concluiu o exercício (quase) com sucesso em Os meus cursos; aí também o pode eliminar.

Para saber mais

Os passos num painel aplicam-se ao WebOké; noutros fornecedores funciona de forma semelhante.

Um momento…

Configurar os seus domínios

Para cada domínio, defina os servidores de nomes, a ligação ao seu alojamento e quem fica como titular.

A carregar os seus domínios…