DataFirefly Skimming Guard: anti-skimming en bestandsintegriteit
Skimmingdetectie, bewaking van bestandsintegriteit en de controle van de PrestaShop-kern installeren en instellen.
Overzicht
DataFirefly Skimming Guard bewaakt de code die uw PrestaShop 8- of 9-winkel aan klanten levert: bestanden, database, de HTML op de betaalpagina’s en wat de browser in de checkout doet. De module detecteert geïnjecteerde scripts die kaartnummers kopiëren (aanvallen in Magecart-stijl), gewijzigde of toegevoegde bestanden en PrestaShop-kernbestanden die afwijken van de officiële release. Ze vult DataFirefly Admin Shield aan, dat de back-office-login beschermt.
Installatie
- Open in de back-office Modules > Modulebeheer > Een module uploaden en upload
dfskimguard-1.2.1.zip. - Open de module. Ze staat ook onder Geavanceerde instellingen > Skimming Guard.
- Klik op Nu scannen. De eerste scan legt de referentie van uw bestanden vast: een SHA-256-vingerafdruk per bestand en een kopie van thema-, moduleweergave- en toegangsbestanden.
- Stel de geplande taak in (zie hieronder).
- Verstuur vanuit het overzicht een testwaarschuwing om de ontvangst te controleren.
Geplande taak
De scans draaien op de achtergrond, nooit tijdens een klantbezoek. Drie mogelijkheden:
- Cron-URL: kopieer de URL uit het blok Geplande taak en roep die elke 15 minuten aan vanuit de cronbeheerder van uw hosting. De URL bevat een geheim token.
- Opdrachtregel: met SSH-toegang voert u
php modules/dfskimguard/cli.phpuit. De optie--fullscant alles in één keer, zonder tijdslimiet. - PrestaShop-module cronjobs: als u die gebruikt, draait de taak elk uur.
Elke run start of hervat de bestandsscan, scant de database elk uur, controleert de PrestaShop-kern elke week en de inhoud van externe scripts elke dag.
Overzicht
De banner bovenaan elk tabblad toont een beveiligingsscore van 0 tot 100 en een zin die de situatie samenvat, met snelkoppelingen naar wat nog openstaat. Het overzicht toont twee groepen controles, mislukte eerst:
- Instelling van de bescherming: recente referentie, actieve geplande taak, ontvangers van waarschuwingen, einde van de leerperiode, blokkering van kaartgegevens, Content Security Policy, kerncontrole, motivering van betaalscripts.
- Beveiliging van de winkel: debugmodus, installatiemap, naam van de adminmap, gevaarlijke bestanden bereikbaar via het web (SQL- of ZIP-back-ups, phpinfo, adminer, .git, .env,
eval-stdin.phpvan PHPUnit), SSL op elke pagina, PHP-versie, rechten van configuratiebestanden.
Elke mislukte controle legt uit hoe u die oplost.
Bescherming van de checkout
Inspectie van de geleverde HTML
Op winkelwagen, checkout en betaalpagina’s van modules leest de module de HTML die PrestaShop maakt. Ze registreert elk extern script, iframe, formulierdoel en elk domein dat in een inline script voorkomt, en past handtekeningen voor versluierde code toe (eval(atob(...)), new Function, fromCharCode-reeksen, scriptladers, detectie van ontwikkelaarstools). Standaard wordt elke pagina hoogstens eens per 5 minuten geïnspecteerd. Pas het interval aan in de instellingen, of bewaak alle pagina’s van de winkel.
Browserwachter
Een script van 5,5 KB wordt als eerste in de <head> van bewaakte pagina’s geplaatst. Het meldt onbekende domeinen die de pagina benadert en herkent op betaalpagina’s een geldig kaartnummer dat naar een niet-goedgekeurd domein gaat, ook base64-gecodeerd. Het nummer gaat nooit naar de server. Om browserextensies uit te filteren, geeft een onbekend domein pas een waarschuwing na 3 verschillende bezoekers (instelbaar); een poging om een kaartnummer te versturen wordt meteen gemeld.
Blokkering van kaartgegevens
Optie Kaartgegevens naar onbekende domeinen blokkeren: het verzoek wordt geannuleerd als het een kaartnummer bevat en naar een niet-goedgekeurd domein gaat. Zet de optie aan zodra de leerperiode voorbij is en uw betaalproviders zijn goedgekeurd.
Content Security Policy
De module kan op bewaakte pagina’s een CSP sturen op basis van de goedgekeurde domeinen. Begin met Alleen rapporteren en schakel over naar Afdwingen zodra er geen onverwacht domein meer opduikt.
Leerperiode
In de 48 uur na de installatie worden externe scripts en domeinen met laag risico zonder waarschuwing goedgekeurd. Verdachte elementen geven toch een waarschuwing. Start de leerperiode opnieuw na een wijziging van thema of betaalmethode met 48 uur leren.
Vertrouwde domeinen
Een ingebouwde lijst dekt gangbare providers (Stripe, PayPal, Braintree, Adyen, Mollie, Klarna, Checkout.com, Worldpay, PayPlug, Stancer, Lyra, PayZen, Systempay, Monetico, Alma, Scalapay, SumUp, Redsys, HiPay, Apple Pay, Google Pay, reCAPTCHA, hCaptcha, Turnstile, Google Analytics, Tag Manager, Meta). Voeg eigen domeinen toe in de instellingen, één per regel; subdomeinen zijn inbegrepen.
Tabblad Scripts en domeinen
Het tabblad toont elk element dat op uw pagina’s is gezien, met type, domein, pagina, risicoscore en aantal keren. Drie acties:
- Goedkeuren: het element en zijn domein komen op de vertrouwde lijst (wachter en CSP). Bij een script op betaalpagina’s vraagt een venster om de motivering.
- Kwaadaardig: de wachter blokkeert het domein en de CSP sluit het uit. Duikt het weer op, dan gaat er een kritieke waarschuwing uit.
- Verwijderen: haalt het element uit de inventaris.
Bestandsintegriteit
Wat wordt bewaakt
Standaardextensies: php, phtml, php5, php7, phar, inc, js, mjs, tpl, twig, html, htm, htaccess, ini, svg, ico. Standaard uitgesloten paden: var, cache, img, upload, download, .git, node_modules, themacaches en back-ups van de adminmap. Het token {admin} wordt vervangen door de naam van uw adminmap.
Een bestand geldt als ongewijzigd als grootte, wijzigingstijd en inode-wijzigingstijd gelijk zijn gebleven. De inode-wijzigingstijd is met touch niet te vervalsen. Elke 7 dagen (instelbaar) worden alle vingerafdrukken opnieuw berekend.
Handtekeningen
Elk nieuw of gewijzigd bestand gaat door de handtekeningen: bekende webshells, eval op gedecodeerde gegevens of verzoekgegevens, systeemopdrachten uit verzoekgegevens, in een afbeelding of .ico verborgen PHP, include van een mediabestand, auto_prepend_file toegevoegd in .htaccess of .user.ini, mediabestanden uitgevoerd als PHP, kaartvelden die worden gelezen en via het netwerk verzonden. Een bestand met risico 70 of hoger geeft direct een kritieke waarschuwing; andere wijzigingen komen samen in één samenvatting per scan.
Tabblad Bestanden
- Wijzigingen bekijken: regel-per-regel diff tussen de goedgekeurde versie en het huidige bestand. Bij geminificeerde JS op één regel wordt alleen het ingevoegde fragment getoond.
- Goedgekeurde versie herstellen: zet de referentiekopie terug. De gewijzigde versie blijft als bewijs in
var/dfskimguard/quarantine. - Goedkeuren: accepteert het huidige bestand als nieuwe referentie. Meervoudige selectie en Alle wijzigingen goedkeuren zijn bedoeld voor na een update.
- Quarantaine: haalt een verdacht nieuw bestand uit de winkel. Het kan worden hersteld.
Updatevenster
Klik vóór de update van een module of het thema op Ik werk mijn winkel bij (2 u). Twee uur lang worden bestanden die zonder verdachte code wijzigen de nieuwe referentie, zonder waarschuwing. Een bestand met hoog risico geeft toch een waarschuwing.
Controle van de PrestaShop-kern
Het tabblad PrestaShop-kern downloadt de officiële bron van uw versie van GitHub en vergelijkt de PHP-, TPL- en Twig-bestanden in classes, controllers, src, config en de PHP-bestanden van de adminmap. Regeleinden en de instellingen die de release-build en de debugmodus in config/defines.inc.php herschrijven, worden genegeerd. De module meldt ook onverwachte PHP-bestanden in classes, controllers en src.
Voor elk gewijzigd bestand: Vergelijken met officieel en daarna Officiële versie herstellen. Een onverwacht bestand kan in quarantaine. De controle loopt elke week automatisch opnieuw.
Databasescan
Elk uur zoekt de module naar scripttags, onerror- of onload-handlers, javascript:-URL’s en versluierde code in configuratiewaarden, CMS-pagina’s, product-, categorie-, merk- en leveranciersbeschrijvingen en eigen tekstblokken. Een script naar een onbekend of gemarkeerd domein verhoogt het risico.
PCI DSS 6.4.3 en 11.6.1
Voor elk toegestaan script op betaalpagina’s legt de module de motivering, de medewerker die het toestond en de datum vast. De knop Motiveren vult een al goedgekeurd script aan. De module bewaakt ook:
- de inhoud van externe scripts op betaalpagina’s, dagelijks gedownload en gescand: een goedgekeurd domein dat kwaadaardige code gaat leveren, geeft een kritieke waarschuwing;
- de beveiligingsheaders van betaalpagina’s die PrestaShop en zijn modules instellen (CSP, HSTS, X-Frame-Options, Permissions-Policy). Headers die de webserver toevoegt, zijn vanuit PHP niet zichtbaar.
De knop PCI DSS-rapport opent een afdrukbaar rapport: gemotiveerde inventaris, actieve detectiemechanismen met hun laatste run, gebeurtenissen van de laatste 90 dagen. Exporteren als CSV levert de ruwe inventaris.
Waarschuwingen
- E-mail: een of meer adressen, instelbare minimale ernst (info, waarschuwing, kritiek).
- Webhook: HTTPS-URL die JSON ontvangt met een Slack-compatibel
text-veld, bruikbaar met Teams of een eigen dienst. - Geen dubbels: dezelfde waarschuwing wordt 60 minuten niet opnieuw verzonden, en er gaan hoogstens 20 waarschuwingen per uur uit (instelbaar).
- Banner in de back-office: zolang een kritieke waarschuwing ongelezen is, staat bovenaan de back-office een rode banner.
- Weekrapport: score, waarschuwingen van de week, openstaande elementen en punten om op te lossen.
Veelgestelde vragen
Na een module-update krijg ik waarschuwingen
Keur de wijzigingen goed op het tabblad Bestanden, of gebruik de volgende keer het updatevenster.
Er verschijnt een onbekend domein dat ik niet herken
Het kan van een browserextensie van een bezoeker komen. Zolang 3 verschillende bezoekers het niet hebben gezien, geeft het geen waarschuwing. Gebruikt u de dienst, keur het dan goed; markeer het anders als kwaadaardig.
Waar worden de kopieën en de quarantaine bewaard?
Referentiekopieën staan gecomprimeerd in de database. De quarantaine en het officiële PrestaShop-archief staan in var/dfskimguard, beschermd door een .htaccess. De module scant deze map niet.
Hoe begin ik opnieuw?
De link Referentie opnieuw instellen wist de bestandsreferentie; de volgende scan maakt een nieuwe. Bestanden in quarantaine blijven vermeld en herstelbaar.