Modul 6 · 6.3
Bezpečnost plateb: PCI a podvody
Modul 6: Správa a zabezpečení · Doba čtení: 11 minut
Cíl lekce: Po této lekci dokážete vysvětlit, proč e-shop nikdy sám nezpracovává údaje o platebních kartách, co pro malý e-shop znamenají PCI DSS a SAQ A, jak chránit stránku pokladny a jak rozpoznat a omezit podvody a card testing.
Klíčové pojmy: PCI DSS, údaje o platebních kartách, poskytovatel plateb, přesměrování na platební stránku, vložený platební formulář (iframe), SAQ A, skripty na stránce pokladny, e-skimming, https, HSTS, card testing, rate limiting, captcha, 3-D Secure, zpětné zúčtování (chargeback), riziko podvodu
Údaje o kartách do Vašeho e-shopu nepatří
Číslo platební karty, datum platnosti a bezpečnostní kód mají pro zločince obrovskou cenu. Kdo je ukládá nebo předává, spadá pod PCI DSS (Payment Card Industry Data Security Standard), bezpečnostní standard karetních společností. Aktuální verze je v4.0.1. Pro firmu, která údaje o kartách zpracovává sama, to znamená rozsáhlý soubor požadavků: oddělení sítí, protokoly, skeny, testování uznanou stranou.
Malý e-shop se do toho pouštět nechce a ani nemusí. Pevné pravidlo zní: údaje o kartách se do Vašeho e-shopu nikdy nedostanou. Zákazník je zadává u Vašeho poskytovatele plateb (Mollie, Stripe, PayPal, WooPayments nebo jiného, lekce 4.4). E-shop se pak dozví jen to, zda je zaplaceno, nebo ne, spolu s identifikátorem. Žádné číslo karty, žádný kód. To také znamená:
- nikdy nevytvářet vlastní pole formuláře pro čísla karet, ani "jen rychle pro telefonickou objednávku";
- nikdy nepřijímat údaje o kartách e-mailem, v chatu nebo po telefonu a nezapisovat je do poznámky k objednávce;
- nepoužívat plugin, který údaje o kartách ukládá do Vaší vlastní databáze.
Přesměrování, nebo vložený formulář: SAQ A
Malé e-shopy dokládají splnění PCI DSS pomocí SAQ (Self-Assessment Questionnaire, dotazník pro sebehodnocení). Váš poskytovatel plateb o něj někdy požádá. Nejjednodušší je SAQ A, určený pro e-shopy, které platby zcela svěřují poskytovateli. V e-shopu to může fungovat dvěma způsoby:
- Přesměrování. Po "objednání" přejde zákazník na platební stránku poskytovatele a pak zpět. E-shop údaje o kartě nikdy nevidí, a to ani stránku, na které se zadávají.
- Vložený formulář. Platební pole je na Vaší stránce pokladny, ale jde o iframe (výřez stránky) poskytovatele. Údaje o kartě jdou z prohlížeče přímo k poskytovateli.
Od 31. března 2025 platí nová verze SAQ A. Obsahuje podmínku, která se týká hlavně druhého způsobu: kdo používá vložený formulář, musí potvrdit, že jeho web není zranitelný vůči útokům skripty, které by mohly zasáhnout platební systém. Pozadím je e-skimming: škodlivý skript na stránce pokladny, který odposlouchává, co zákazník píše, nebo přes skutečné platební pole překryje falešné. Kdo přesměrovává na stránku poskytovatele, pod tuto podmínku nespadá. Zeptejte se svého poskytovatele plateb, který SAQ platí pro Vaše propojení; ten to ví přesně.
Co uděláte v každém případě:
- Udržujte stránku pokladny co nejjednodušší. Každý skript na této stránce může v principu odposlouchávat: chatovací widgety, správci značek (tag managery), reklamní pixely, nástroje pro A/B testování. Na stránce pokladny načítejte jen to, co je pro platbu nutné. Tag manager na stránce pokladny je brána, kterou může skripty přidat kdokoli s přístupem k danému účtu.
- Málo pluginů, a aktualizovaných (lekce 6.2). Většina e-skimmingu ve WordPressu pronikne přes zranitelnost v pluginu nebo ukradené heslo administrátora.
- Content-Security-Policy (hlavička, která určuje, z jakých domén smějí skripty pocházet) omezí škody, pokud se přece jen něco dostane dovnitř. To je práce pro někoho, kdo to umí otestovat; chybná CSP rozbije Vaše platební tlačítko.
https a HSTS na stránce pokladny
Že celý Váš e-shop běží přes https, je samozřejmost (kurz WordPress, lekce 3.1). Pro stránku pokladny přibývají dvě věci:
- http musí okamžitě přesměrovat na https, a to trvalým přesměrováním (301 nebo 308). Zákazník, který někdy zadá
http://shop.example.com/afrekenen/, nesmí dostat nešifrovanou stránku. - HSTS (HTTP Strict Transport Security) je hlavička, kterou prohlížeči nařídíte, aby Váš web po určitou dobu otevíral pouze přes https. Tím zabráníte tomu, aby někdo na otevřené Wi-Fi zachytil první nešifrovaný požadavek. max-age alespoň 180 dní je běžné minimum. HSTS zapněte až ve chvíli, kdy vše, včetně subdomén, které zahrnete, funguje přes https: prohlížeč, který HSTS jednou viděl, pak http odmítne. Jak to nastavit, vysvětluje KB 6752.
Smíšený obsah (skript nebo styl načítaný přes http na stránce s https) je na stránce pokladny obzvlášť nebezpečný: právě takový soubor může být cestou podvržen.
Card testing
Při card testingu zločinci zkoušejí ve Vašem e-shopu ukradená čísla karet. Automaticky zadávají stovky malých objednávek. Každá úspěšná platba jim prozradí, že karta funguje. Vy dostanete hromadu neúspěšných objednávek, poplatky za transakce, zpětná zúčtování a v nejhorším případě poskytovatele plateb, který Váš účet zablokuje.
Jak to poznáte: mnoho objednávek v krátkém čase, často stejného levného produktu, s různými jmény, ale stejnými nebo podivnými adresami, a mnoho objednávek ve stavu Selhalo.
Jak to omezit:
- Rate limiting (omezení počtu požadavků za určitý čas). Store API WooCommerce, které používají bloky košíku a pokladny, má rate limiting vestavěný, ale ten je ve výchozím stavu vypnutý. V WooCommerce > Nastavení > Pokročilé > Vlastnosti můžete zapnout "Rate limiting Checkout block and Store API" pro zadávání objednávek. Pomocí kódu (filtru) můžete limit nastavit sami; výchozí hodnota je 25 požadavků za 10 sekund a započítává se jen objednávání a další zápisové akce. Pokud je Váš e-shop za proxy nebo CDN, musí být zapnutá podpora proxy, jinak se všichni návštěvníci počítají jako jeden.
- Captcha nebo podobná překážka v pokladně. Samo WooCommerce uvádí, že rate limiting a captcha fungují nejlépe společně: útočníci často střídají IP adresy.
- Nastavení Vašeho poskytovatele plateb. Poskytovatelé mají vlastní filtry proti podvodům a limity. Zapněte je a sledujte, co hlásí.
- 3-D Secure (dodatečné potvrzení v bankovní aplikaci, součást silného ověření zákazníka v EU) zločincům práci ztěžuje a při sporu často přesouvá odpovědnost na banku držitele karty.
Další podvody
Ne každý podvod je automatizovaný. Signály, které dohromady dávají důvod s odesláním chvíli počkat:
- fakturační a doručovací adresa v různých zemích nebo doručovací adresa u přeposílací služby;
- první objednávka obsahující jen drahé, snadno přeprodejné produkty s expresní dopravou;
- několik pokusů s různými kartami;
- zákazník, který po zaplacení žádá o odeslání na jinou adresu.
Zpětné zúčtování (chargeback) je zrušení platby kartou bankou zákazníka. Přijdete o částku, často i s poplatky, a produkt je pryč. Proto uchovávejte doklady o odeslání a doručení. Platbu přes iDEAL dosud tímto způsobem zrušit nešlo; jak je to u Wero, Vám sdělí Váš poskytovatel plateb (lekce 4.4). V Česku se běžně používá platba kartou, bankovní převod (QR platba) a dobírka.
Shrnutí
- Údaje o kartách se do Vašeho e-shopu nikdy nedostanou: ani do formulářů, poznámek či e-mailů. Zpracovává je poskytovatel plateb.
- Přesměrování na platební stránku nebo vložené pole poskytovatele Vás drží u nejjednoduššího dotazníku PCI (SAQ A); u vloženého pole musí být Vaše stránka pokladny chráněná proti útokům skripty.
- Udržujte stránku pokladny co nejjednodušší, přes https s přesměrováním 301 z http a s HSTS alespoň 180 dní.
- Card testing omezíte pomocí rate limitingu (ve výchozím stavu vypnutý), captchy a filtrů Vašeho poskytovatele.
- Všímejte si signálů podvodu a uchovávejte doklady o doručení pro případ zpětného zúčtování.
Kvíz
Úkol
Úkol A6.3: Je Vaše stránka pokladny bezpečná? Zadejte adresu svého e-shopu a adresu stránky pokladny. Program zkontroluje certifikát, načte stránku pokladny přes http (bez sledování přesměrování) a přes https (s prázdným košíkem, nic se neobjednává). Zelená, pokud je certifikát platný, http přesměrovává pomocí 301 nebo 308 na https, hlavička Strict-Transport-Security má max-age alespoň 180 dní, na stránce není smíšený obsah a skripty načítá nejvýše pět dalších domén (program je zobrazí). Oranžová, pokud HSTS chybí nebo je příliš krátké, jde o dočasné přesměrování (302 nebo 307), skripty načítá více než pět domén nebo tag manager, nebo je pole pro číslo karty ve Vašem vlastním HTML místo u poskytovatele. Červená, pokud nefunguje https nebo certifikát, http nepřesměrovává nebo se skripty či styly načítají přes http. Údaje o kartách nikdy neukládejte sami. Tato kontrola vidí jen to, co je na stránce bez košíku.
Otázka pro Vás (nekontroluje se): přesměrovává Váš platební plugin k poskytovateli, nebo je platební pole na Vaší stránce? Který SAQ podle Vašeho poskytovatele platí?
Zelené zaškrtnutí znamená, že tato kontrola teď vychází, ne že je Váš e-shop bezpečný.
Další čtení
Postupy v panelu platí pro WebOké; u jiných poskytovatelů to funguje podobně.
- Bezplatný kurz WordPress 3.1: Https a certifikát
- HSTS a bezpečnostní hlavičky pro Váš web
- Vynutit přesměrování návštěvníků na https
- Příručka k DirectAdmin 6.4: Návštěvníky vždy přesměrovat na https
- Bezplatný kurz Bezpečně online pro podnikatele 4.2: Vaše webová stránka: https, HSTS a bezpečnostní hlavičky
- Aktualizace SAQ A (PCI Security Standards Council, anglicky): https://blog.pcisecuritystandards.org/important-updates-announced-for-merchants-validating-to-self-assessment-questionnaire-a
- Rate limiting pro Store API (developer.woocommerce.com, anglicky): https://developer.woocommerce.com/docs/apis/store-api/rate-limiting/
- Card testing attacks and the Store API (developer.woocommerce.com, anglicky): https://developer.woocommerce.com/2024/12/18/card-testing-attacks-and-the-store-api/
- Bezpečnost plateb ve Vašem e-shopu: PCI, card testing a co pro Vás dělá hoster
