# DataFirefly Skimming Guard: anti-skimming en bestandsintegriteit

> 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…

- Pagina: <https://www.datafirefly.com/nl/documentation/dfskimguard/>
- Taal: nl
- Bijgewerkt op: 2026-09-30
- Andere talen: [fr](https://www.datafirefly.com/documentation/dfskimguard/index.md), [en](https://www.datafirefly.com/en/documentation/dfskimguard/index.md), [es](https://www.datafirefly.com/es/documentation/dfskimguard/index.md), [de](https://www.datafirefly.com/de/documentation/dfskimguard/index.md), [it](https://www.datafirefly.com/it/documentation/dfskimguard/index.md), [pl](https://www.datafirefly.com/pl/documentation/dfskimguard/index.md), [pt](https://www.datafirefly.com/pt/documentation/dfskimguard/index.md)
- Index: <https://www.datafirefly.com/nl/documentation/llms.txt>

## 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](https://www.datafirefly.com/nl/product/prestashop-back-office-security/) aan, dat de back-office-login beschermt.

## Installatie

1. Open in de back-office **Modules > Modulebeheer > Een module uploaden** en upload `dfskimguard-1.2.1.zip`.
2. Open de module. Ze staat ook onder **Geavanceerde instellingen > Skimming Guard**.
3. 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.
4. Stel de geplande taak in (zie hieronder).
5. Verstuur vanuit het overzicht een testwaarschuwing om de ontvangst te controleren.

Een referentie van 16.000 bestanden is op een gewone server in minder dan een minuut klaar. Bij hosting met een limiet van 30 seconden per verzoek splitst de scan zich vanzelf in korte stappen.

## 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.php` uit. De optie `--full` scant 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.php` van 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 `` 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.

In de modus Afdwingen wordt elk niet-goedgekeurd domein geblokkeerd, ook een nieuwe betaalprovider. Keur die eerst goed.

### 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.

De server moet codeload.github.com kunnen bereiken. Zijn uitgaande verbindingen geblokkeerd, dan toont de controle een foutmelding en werkt de rest van de module normaal.

## 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.

Het rapport ondersteunt een PCI DSS-beoordeling. Het certificeert geen naleving: uw acquirer of beoordelaar blijft de referentie.

## 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.
