Modul 6 · 6.3
Varnost plačil: PCI in goljufije
Modul 6: Upravljanje in varnost · Čas branja: 11 minut
Učni cilj: Po tej lekciji boste znali pojasniti, zakaj trgovina podatkov o karticah nikoli ne obdeluje sama, kaj PCI DSS in SAQ A pomenita za majhno trgovino, kako zaščitite stran za zaključek nakupa ter kako prepoznate in omejite goljufije in card testing.
Ključni pojmi: PCI DSS, podatki o karticah, ponudnik plačil, preusmeritev na plačilno stran, vdelan plačilni obrazec (iframe), SAQ A, skripte na strani za zaključek nakupa, e-skimming, https, HSTS, card testing, omejevanje zahtev (rate limiting), captcha, 3-D Secure, vračilo bremenitve (chargeback), tveganje goljufije
Podatki o karticah ne sodijo v Vašo trgovino
Številka kreditne kartice, datum veljavnosti in varnostna koda so za kriminalce vredni zlata. Kdor jih shranjuje ali posreduje, je zavezan standardu PCI DSS (Payment Card Industry Data Security Standard), varnostnemu standardu kartičnih družb. Trenutna različica je v4.0.1. Za podjetje, ki podatke o karticah obdeluje samo, je to obsežen sklop zahtev: ločevanje omrežij, dnevniki, pregledi, testiranje s strani pooblaščenega izvajalca.
Majhna trgovina se temu želi izogniti in se mu tudi lahko. Stalno pravilo: podatki o karticah nikoli ne pridejo v Vašo trgovino. Stranka jih vnese pri Vašem ponudniku plačil (Mollie, Stripe, PayPal, WooPayments ali drug, lekcija 4.4). Trgovina nato izve le: plačano ali ne, skupaj z oznako. Brez številke kartice, brez kode. To pomeni tudi:
- nikoli ne ustvarite lastnega polja obrazca za številke kartic, niti »na hitro za telefonsko naročilo«;
- nikoli ne sprejemajte podatkov o karticah po e-pošti, klepetu ali telefonu in jih ne zapisujte v opombo k naročilu;
- ne uporabljajte vtičnika, ki podatke o karticah shranjuje v Vašo lastno podatkovno zbirko.
Preusmeritev ali vdelava: SAQ A
Majhne trgovine s SAQ (Self-Assessment Questionnaire, vprašalnik za samooceno) dokažejo, da izpolnjujejo PCI DSS. Ponudnik plačil to včasih zahteva. Najlažji je SAQ A, za trgovine, ki plačilo v celoti prepustijo zunanjemu ponudniku. V trgovini to deluje na dva načina:
- Preusmeritev. Po »naročilu« gre stranka na plačilno stran ponudnika in nato nazaj. Trgovina podatkov o kartici nikoli ne vidi, prav tako ne strani, na kateri se vnašajo.
- Vdelan obrazec. Plačilno polje je na Vaši strani za zaključek nakupa, vendar je iframe (del strani) ponudnika. Podatki o kartici gredo iz brskalnika neposredno k ponudniku.
Od 31. marca 2025 velja nova različica SAQ A. V njej je pogoj, ki zadeva predvsem drugi način: kdor uporablja vdelan obrazec, mora potrditi, da njegovo spletno mesto ni ranljivo za napade s skriptami, ki bi lahko vplivali na plačilni sistem. Ozadje je e-skimming: zlonamerna skripta na Vaši strani za zaključek nakupa, ki bere, kar stranka vnaša, ali čez pravo plačilno polje položi lažno. Kdor preusmerja na stran ponudnika, temu pogoju ni zavezan. Svojega ponudnika plačil vprašajte, kateri SAQ velja za Vašo povezavo; on to natančno ve.
Kaj naredite v vsakem primeru:
- Stran za zaključek nakupa naj bo čim bolj prazna. Vsaka skripta na tej strani lahko načeloma bere vnose: pripomočki za klepet, upravitelji oznak (tag manager), oglaševalski piksli, orodja za A/B-testiranje. Na strani za zaključek nakupa naložite le to, kar je potrebno za plačilo. Upravitelj oznak na tej strani je vrata, skozi katera lahko vsak z dostopom do tega računa doda skripte.
- Malo vtičnikov, in posodobljeni (lekcija 6.2). Večina e-skimminga na WordPressu pride skozi ranljivost v vtičniku ali ukradeno skrbniško geslo.
- Content-Security-Policy (glava, ki določa, s katerih domen se smejo nalagati skripte) omeji škodo, če kaj vendarle pride noter. To je delo za nekoga, ki to zna preizkusiti; napačen CSP pokvari Vaš gumb za plačilo.
https in HSTS na strani za zaključek nakupa
Da celotna trgovina deluje prek https, je samoumevno (tečaj WordPress, lekcija 3.1). Za stran za zaključek nakupa sta pomembni še dve stvari:
- http mora takoj preusmeriti na https, s trajno preusmeritvijo (301 ali 308). Stranka, ki kdaj vnese
http://shop.example.com/afrekenen/, ne sme dobiti nešifrirane strani. - HSTS (HTTP Strict Transport Security) je glava, s katero brskalniku naročite, naj Vaše spletno mesto nekaj časa odpira le prek https. Tako preprečite, da bi nekdo v odprtem omrežju wifi prestregel prvo nešifrirano zahtevo. max-age najmanj 180 dni je običajen minimum. HSTS vklopite šele, ko vse, tudi poddomene, ki jih vključite, deluje prek https: brskalnik, ki je HSTS že videl, potem zavrne http. Članek KB 6752 pojasnjuje, kako ga nastavite.
Mešana vsebina (skripta ali slogovna datoteka prek http na strani https) je na strani za zaključek nakupa še posebej nevarna: prav takšno datoteko je mogoče med prenosom zamenjati.
Card testing
Pri card testingu kriminalci Vašo trgovino uporabljajo za preizkušanje ukradenih številk kartic. Samodejno oddajo na stotine majhnih naročil. Vsako uspešno plačilo jim pove, da kartica deluje. Vi dobite kup neuspelih naročil, stroške na transakcijo, vračila bremenitev in v najslabšem primeru ponudnika plačil, ki Vam blokira račun.
Kako ga prepoznate: veliko naročil v kratkem času, pogosto istega majhnega izdelka, z različnimi imeni, a enakimi ali nenavadnimi naslovi, in veliko naročil s statusom Spodletelo.
Kako ga omejite:
- Rate limiting (omejitev števila zahtev v določenem času). Store API v WooCommerce, ki ga uporabljata bloka za košarico in blagajno, ima omejevanje zahtev vgrajeno, vendar je privzeto izklopljeno. Pod WooCommerce > Nastavitve > Napredno > Zmožnosti lahko za oddajo naročil vklopite »Rate limiting Checkout block and Store API«. S kodo (filtrom) lahko mejo nastavite sami; privzeto je 25 zahtev na 10 sekund, štejejo pa le naročila in druga pisalna dejanja. Če je Vaša trgovina za posredniškim strežnikom (proxy) ali CDN, morate vklopiti podporo za proxy, sicer vsi obiskovalci štejejo kot eden.
- Captcha ali podobna ovira pri zaključku nakupa. WooCommerce sam navaja, da omejevanje zahtev in captcha najbolje delujeta skupaj: napadalci pogosto menjajo IP naslov.
- Nastavitve Vašega ponudnika plačil. Ponudniki imajo lastne filtre za goljufije in omejitve. Vklopite jih in spremljajte, kaj sporočajo.
- 3-D Secure (dodatna potrditev v bančni aplikaciji, del močne avtentikacije strank v EU) kriminalcem otežuje delo in pri sporu odgovornost pogosto prenese na banko imetnika kartice.
Druge goljufije
Niso vse goljufije avtomatizirane. Znaki, ki skupaj pomenijo razlog, da s pošiljanjem malo počakate:
- naslov za račun in naslov za dostavo v različnih državah ali naslov za dostavo pri storitvi za posredovanje pošiljk;
- prvo naročilo samo z dragimi izdelki, ki jih je lahko preprodati, z nujno dostavo;
- več poskusov z različnimi karticami;
- stranka, ki po plačilu prosi za pošiljanje na drug naslov.
Vračilo bremenitve (chargeback) je razveljavitev kartičnega plačila s strani banke stranke. Izgubite znesek, pogosto s stroški, izdelka pa ni več. Zato hranite dokazila o pošiljanju in dostavi. Plačila iDEAL (Nizozemska) doslej ni bilo mogoče razveljaviti na ta način; kako je pri Wero, Vam pove Vaš ponudnik plačil (lekcija 4.4).
Povzetek
- Podatki o karticah nikoli ne pridejo v Vašo trgovino: ne v obrazce, opombe ali e-sporočila. Obdela jih ponudnik plačil.
- Preusmeritev na plačilno stran ali vdelano polje ponudnika Vas ohrani pri najlažjem vprašalniku PCI (SAQ A); pri vdelanem polju mora biti Vaša stran za zaključek nakupa zaščitena pred napadi s skriptami.
- Stran za zaključek nakupa naj bo čim bolj prazna, prek https s preusmeritvijo 301 s http in s HSTS najmanj 180 dni.
- Card testing omejite z omejevanjem zahtev (privzeto izklopljeno), captcho in filtri ponudnika.
- Bodite pozorni na znake goljufije in hranite dokazila o dostavi za primer vračil bremenitev.
Kviz
Naloga
Naloga A6.3: Ali je Vaša stran za zaključek nakupa varna? Vnesite naslov svoje trgovine in naslov strani za zaključek nakupa. Program preveri certifikat, stran za zaključek nakupa zahteva prek http (brez sledenja preusmeritvi) in prek https (s prazno košarico, nič se ne naroči). Zeleno, če je certifikat veljaven, http preusmeri na https s 301 ali 308, ima glava Strict-Transport-Security max-age najmanj 180 dni, ni mešane vsebine in skripte na stran nalaga največ pet drugih domen (program jih prikaže). Oranžno, če HSTS ni ali je prekratek, pri začasni preusmeritvi (302 ali 307), pri več kot petih domenah skript ali upravitelju oznak ali pri polju za številko kartice v lastnem HTML namesto pri ponudniku. Rdeče, če https ali certifikat ni v redu, http ne preusmerja ali se skripte ali slogovne datoteke nalagajo prek http. Podatkov o karticah nikoli ne shranjujte sami. To preverjanje vidi le, kar je na strani brez košarice.
Vprašanje zase (ne preverja se): ali Vaš plačilni vtičnik preusmerja k ponudniku ali je plačilno polje na Vaši strani? Kateri SAQ po besedah Vašega ponudnika velja?
Zelena kljukica pomeni, da je to preverjanje trenutno v redu, ne pa, da je Vaša trgovina varna.
Za nadaljnje branje
Koraki v nadzorni plošči veljajo za WebOké; pri drugih ponudnikih deluje podobno.
- Brezplačni tečaj WordPress 3.1: Https in certifikat
- HSTS in varnostne glave za Vašo spletno stran
- Obvezno preusmerjanje obiskovalcev na https
- Priročnik DirectAdmin 6.4: Obiskovalce vedno preusmerite na https
- Brezplačen tečaj Varno na spletu za podjetnike 4.2: Vaša spletna stran: https, HSTS in varnostne glave
- Posodobitve za SAQ A (PCI Security Standards Council, angleško): https://blog.pcisecuritystandards.org/important-updates-announced-for-merchants-validating-to-self-assessment-questionnaire-a
- Omejevanje zahtev za Store API (developer.woocommerce.com, angleško): https://developer.woocommerce.com/docs/apis/store-api/rate-limiting/
- Card testing attacks and the Store API (developer.woocommerce.com, angleško): https://developer.woocommerce.com/2024/12/18/card-testing-attacks-and-the-store-api/
