Moodul 6 · 6.3
Maksete turvalisus: PCI ja pettused
Moodul 6: Haldus ja turvalisus · Lugemisaeg: 11 minutit
Õpieesmärk: Pärast seda õppetundi oskad selgitada, miks e-pood ei töötle kaardiandmeid kunagi ise, mida PCI DSS ja SAQ A väikesele e-poele tähendavad, kuidas kassalehte kaitsta ning kuidas pettusi ja card testingut ära tunda ja piirata.
Põhimõisted: PCI DSS, kaardiandmed, makseteenuse pakkuja, ümbersuunamine makselehele, manustatud maksevorm (iframe), SAQ A, skriptid kassalehel, e-skimming, https, HSTS, card testing, päringute piiramine (rate limiting), captcha, 3-D Secure, tagasinõue (chargeback), pettuse risk
Kaardiandmed ei kuulu sinu e-poodi
Krediitkaardi number, aegumiskuupäev ja turvakood on kurjategijatele kulla väärtusega. Kes neid salvestab või edastab, kuulub PCI DSS (Payment Card Industry Data Security Standard) alla, mis on kaardiettevõtete turvastandard. Praegune versioon on v4.0.1. Ettevõttele, kes töötleb kaardiandmeid ise, tähendab see suurt nõuete paketti: võrgu eraldamine, logid, skaneerimised, testimine tunnustatud osapoole poolt.
Väike e-pood ei taha sellega tegeleda ja ei peagi. Kindel reegel: kaardiandmed ei jõua kunagi sinu e-poodi. Klient sisestab need sinu makseteenuse pakkuja juures (Mollie, Stripe, PayPal, WooPayments või mõni muu, õppetund 4.4). E-pood saab pärast seda teada ainult: makstud või mitte, koos viitega. Ei kaardinumbrit ega koodi. See tähendab ka:
- ära kunagi loo kaardinumbrite jaoks oma vormivälja, isegi mitte „korraks telefonitellimuse jaoks“;
- ära kunagi võta kaardiandmeid vastu e-kirja, vestluse või telefoni teel ega pane neid tellimuse juurde märkmesse;
- ära kasuta pluginat, mis salvestab kaardiandmed sinu enda andmebaasi.
Ümbersuunamine või manustatud vorm: SAQ A
Väikesed e-poed näitavad SAQ (Self-Assessment Questionnaire, enesehindamise küsimustik) abil, et nad vastavad PCI DSS-ile. Makseteenuse pakkuja küsib seda mõnikord. Kõige kergem on SAQ A, mis on mõeldud e-poodidele, kes on makse täielikult sisse ostnud. E-poes toimib see kahel viisil:
- Ümbersuunamine. Pärast tellimist läheb klient pakkuja makselehele ja seejärel tagasi. E-pood ei näe kaardiandmeid kunagi, ega ka lehte, kus need sisestatakse.
- Manustatud vorm. Makseväli on sinu kassalehel, kuid see on pakkuja iframe (lehe tükk). Kaardiandmed liiguvad brauserist otse pakkujale.
Alates 31. märtsist 2025 kehtib SAQ A uus versioon. Selles on tingimus, mis puudutab eelkõige teist viisi: kes kasutab manustatud vormi, peab kinnitama, et tema sait ei ole haavatav skriptirünnakutele, mis võivad maksesüsteemi mõjutada. Taustaks on e-skimming: pahatahtlik skript sinu kassalehel, mis loeb kaasa, mida klient sisestab, või paneb võltsmaksevälja päris välja peale. Kes suunab kliendi pakkuja lehele, selle tingimuse alla ei kuulu. Küsi oma makseteenuse pakkujalt, milline SAQ sinu ühenduse puhul kehtib; tema teab seda täpselt.
Mida teed igal juhul:
- Hoia kassaleht lihtne. Iga skript sellel lehel võib põhimõtteliselt kaasa lugeda: vestlusvidinad, tag managerid, reklaamipikslid, A/B-testimise tööriistad. Laadi kassalehel ainult seda, mis on makseks vajalik. Tag manager kassalehel on värav, mille kaudu igaüks, kellel on sellele kontole ligipääs, saab skripte lisada.
- Vähe pluginaid ja need uuendatud (õppetund 6.2). Enamik e-skimmingut WordPressis pääseb sisse plugina turvaaugu või varastatud administraatori parooli kaudu.
- Content-Security-Policy (päis, mis ütleb, millistelt domeenidelt skriptid tulla tohivad) piirab kahju, kui midagi siiski sisse pääseb. See on töö kellelegi, kes oskab seda testida; vale CSP rikub sinu maksenupu.
https ja HSTS kassalehel
On iseenesestmõistetav, et kogu sinu e-pood töötab https kaudu (WordPressi kursus, õppetund 3.1). Kassalehe jaoks lisandub kaks asja:
- http peab kohe suunama https-ile, püsiva ümbersuunamisega (301 või 308). Klient, kes kunagi sisestab
http://shop.example.com/afrekenen/, ei tohi saada krüpteerimata lehte. - HSTS (HTTP Strict Transport Security) on päis, millega annad brauserile korralduse avada sinu saiti teatud aja jooksul ainult https kaudu. Nii takistad, et keegi avatud wifis esimest krüpteerimata päringut kinni püüaks. Vähemalt 180-päevane max-age on tavapärane miinimum. Lülita HSTS sisse alles siis, kui kõik, ka kaasatud alamdomeenid, töötab https kaudu: brauser, mis on HSTS-i näinud, keeldub seejärel http-st. KB 6752 selgitab, kuidas seda seadistada.
Segasisu (skript või stiilileht http kaudu https-lehel) on kassalehel eriti ohtlik: just selline fail võib teel välja vahetatud saada.
Card testing
Card testingu korral kasutavad kurjategijad sinu e-poodi varastatud kaardinumbrite proovimiseks. Nad esitavad automaatselt sadu väikseid tellimusi. Iga õnnestunud makse annab neile teada, et kaart töötab. Sina saad hunniku ebaõnnestunud tellimusi, tehingutasusid, tagasinõudeid ja halvimal juhul makseteenuse pakkuja, kes sinu konto blokeerib.
Äratundmine: palju tellimusi lühikese ajaga, sageli sama väikese toote kohta, erinevate nimedega, kuid samade või kummaliste aadressidega, ja palju olekuga Ebaõnnestunud.
Piiramine:
- Päringute piiramine (rate limiting) (piirang päringute arvule ajaühikus). WooCommerce’i Store API-l, mida ostukorvi ja kassa plokid kasutavad, on päringute piiramine sisse ehitatud, kuid see on vaikimisi välja lülitatud. Menüüs WooCommerce > Sätted > Täpsemad seaded > Funktsioonid saad tellimuste esitamiseks sisse lülitada „Rate limiting Checkout block and Store API“. Koodiga (filtriga) saad piiri ise määrata; vaikimisi on see 25 päringut 10 sekundi kohta ning arvesse lähevad ainult tellimine ja muud kirjutamistoimingud. Kui sinu e-pood on proksi või CDN-i taga, peab proksi tugi olema sisse lülitatud, muidu loetakse kõiki külastajaid üheks.
- Captcha või sarnane takistus kassas. WooCommerce ise ütleb, et päringute piiramine ja captcha töötavad koos kõige paremini: ründajad vahetavad sageli IP aadressi.
- Sinu makseteenuse pakkuja seaded. Pakkujatel on oma pettusefiltrid ja limiidid. Lülita need sisse ja vaata, mida need teatavad.
- 3-D Secure (lisakinnitus pangarakenduses, osa ELi tugevast kliendi autentimisest) teeb kurjategijatele asja keerulisemaks ja nihutab vaidluse korral vastutuse sageli kaardiomaniku pangale.
Muud pettused
Kõik pettused ei ole automatiseeritud. Märgid, mis kokkuvõttes annavad põhjust saatmisega veidi oodata:
- arve- ja tarneaadress eri riikides või tarneaadress edasisaatmisteenuse juures;
- esimene tellimus ainult kallitest, kergesti edasimüüdavatest toodetest, kiirtarnega;
- mitu katset erinevate kaartidega;
- klient, kes palub pärast makset saata teisele aadressile.
Tagasinõue (chargeback) on kaardimakse tühistamine kliendi panga poolt. Kaotad summa, sageli koos tasudega, ja toode on läinud. Seetõttu säilita saatmise ja kättetoimetamise tõendid. Hollandis kasutatavat iDEAL-makset ei saanud seni sel viisil tagasi pöörata; kuidas see Wero puhul käib, kuuled oma makseteenuse pakkujalt (õppetund 4.4). Eestis on levinud makseviisid pangalingid ja kaardimaksed; kaardimaksete puhul kehtib tagasinõude risk.
Kokkuvõte
- Kaardiandmed ei jõua kunagi sinu e-poodi: ei vormidesse, märkmetesse ega e-kirjadesse. Neid töötleb makseteenuse pakkuja.
- Ümbersuunamine makselehele või pakkuja manustatud väli hoiab sind kõige kergema PCI küsimustiku (SAQ A) juures; manustatud välja korral peab sinu kassaleht olema kaitstud skriptirünnakute eest.
- Hoia kassaleht lihtne, https kaudu, 301-ga http-st ja vähemalt 180-päevase HSTS-iga.
- Card testingut piirad päringute piiramisega (vaikimisi väljas), captcha ja oma pakkuja filtritega.
- Jälgi pettuse märke ja säilita kättetoimetamise tõendid tagasinõuete vastu. Eestis kasutatakse pangalinke ja kaardimakseid, tagasinõue puudutab kaardimakseid.
Test (quiz)
Ülesanne
Ülesanne A6.3: Kas sinu kassaleht on turvaline? Sisesta oma e-poe aadress ja kassalehe aadress. Programm kontrollib sertifikaati, küsib kassalehte http kaudu (ilma ümbersuunamist järgimata) ja https kaudu (tühja ostukorviga, midagi ei tellita). Roheline, kui sertifikaat kehtib, http suunab 301 või 308-ga https-ile, päisel Strict-Transport-Security on vähemalt 180-päevane max-age, segasisu ei ole ja lehel laadivad skripte kõige rohkem viis muud domeeni (programm näitab neid). Oranž, kui HSTS puudub või on liiga lühike, ümbersuunamine on ajutine (302 või 307), skriptidomeene on üle viie või on tag manager, või kui kaardinumbri väli on sinu enda HTML-is, mitte pakkuja juures. Punane, kui https või sertifikaat ei ole korras, http ei suuna ümber või skriptid või stiililehed laaditakse http kaudu. Ära kunagi salvesta kaardiandmeid ise. See kontroll näeb ainult seda, mis on lehel ilma ostukorvita.
Küsimus endale (seda ei kontrollita): kas sinu makseplugin suunab pakkujale või on makseväli sinu lehel? Millise SAQ kehtivust sinu pakkuja kinnitab?
Roheline linnuke tähendab, et see kontroll on praegu korras, mitte et sinu e-pood on turvaline.
Lisalugemist
Juhtpaneeli sammud kehtivad WebOké kohta; teiste pakkujate juures toimib see sarnaselt.
- Tasuta WordPressi kursus 3.1: https ja sertifikaat
- HSTS ja turvapäised sinu veebilehele
- Suuna külastajad kohustuslikult https-ile
- DirectAdmin juhend 6.4: Külastajate suunamine alati https peale
- Tasuta kursus Turvaline veebis tegutsemine ettevõtjatele 4.2: Sinu veebileht: https, HSTS ja turbepäised
- SAQ A uuendused (PCI Security Standards Council, inglise keeles): https://blog.pcisecuritystandards.org/important-updates-announced-for-merchants-validating-to-self-assessment-questionnaire-a
- Store API päringute piiramine (developer.woocommerce.com, inglise keeles): https://developer.woocommerce.com/docs/apis/store-api/rate-limiting/
- Card testing attacks and the Store API (developer.woocommerce.com, inglise keeles): https://developer.woocommerce.com/2024/12/18/card-testing-attacks-and-the-store-api/
- Maksete turvalisus su veebipoes: PCI, kaardiga testimine ja mida su majutaja teeb
