Elke Shopify-app die je installeert krijgt rechten op je winkel. Veel merchants klikken door het scherm met toestemmingen zonder het te lezen.
Elke Shopify-app die je installeert krijgt rechten op je winkel. Veel merchants klikken door het scherm met toestemmingen zonder het te lezen. Dat is begrijpelijk, en het is een risico.
Shopify regelt de basis stevig: hosting, platformbeveiliging en betalingen. Wat jij zelf toevoegt, valt buiten die garantie. Apps zijn daarvan het grootste deel. Lees ook wat Shopify wel en niet regelt in Shopify security: wat regelt Shopify, wat jij.
Wat een app precies mag: API-scopes
Bij installatie vraagt een app om toegang via scopes. Een scope is een recht op een bepaald type data of actie. Je ziet ze in het toestemmingsscherm, in de naam read_ of write_ plus een onderwerp.
De logica:
read_laat de app gegevens lezen.write_laat de app gegevens wijzigen, aanmaken of verwijderen.
Een paar voorbeelden die je kritisch moet bekijken:
| Scope | Wat de app kan | Vraag die je moet stellen |
|---|---|---|
read_customers | Namen, adressen, e-mail en orderhistorie van klanten inzien | Heeft deze app klantgegevens echt nodig? |
write_orders | Bestellingen aanpassen of annuleren | Waarom moet een review-app orders wijzigen? |
read_orders | Alle bestellingen en bijbehorende gegevens lezen | Is dit nodig voor de functie? |
write_products | Producten, prijzen en content wijzigen | Wat gebeurt er als de app gehackt wordt? |
write_themes | Themacode wijzigen | Kan de app dan scripts in je winkel plaatsen? |
De regel: een app met meer rechten dan zijn functie vraagt, is een vlag. Een app die alleen een countdown-timer toont, heeft geen read_customers nodig.
Kijk naar het scenario, niet naar de intentie
De meeste apps zijn geen kwaadwillende partij. Maar een app is ook een bedrijf met een eigen servers, eigen medewerkers en eigen beveiliging. Wordt die partij gehackt, dan kan een aanvaller de rechten gebruiken die jij hebt verleend.
Stel jezelf dus de vraag: wat is de schade als deze app morgen in verkeerde handen valt? Voor een app met read_customers en read_orders is dat een datalek van klantgegevens. Dat heeft ook een AVG-kant. Zie datalek melden bij de AP. Geen juridisch advies, wel een reden om serieus te kijken.
Waar je de rechten ziet
In je Shopify-admin staat onder de app-instellingen een lijst van geïnstalleerde apps. Per app zie je welke toegang hij heeft. Bij het installeren van een nieuwe app krijg je een scherm met een samenvatting.
Neem de tijd voor dat scherm. Het is de enige keer dat je makkelijk "nee" zegt.
Voor eigen koppelingen en maatwerk-apps heb je zelf de controle over de scopes. Daar geldt hetzelfde principe: vraag het minimum. Zie ook API-beveiliging voor e-commerce integraties.
Verwijderde apps die iets achterlaten
Een app deïnstalleren voelt als opruimen. Meestal is het dat ook. Maar niet altijd volledig.
Veel apps voegen code toe aan je winkel: een script in het thema, een snippet in theme.liquid, een app embed of een tracking-pixel. Bij deïnstallatie ruimt een goede app dat op. Een slechte doet dat niet.
Wat je dan overhoudt:
- Een scripttag die nog naar een externe server wijst
- Liquid-code in je thema die een niet meer bestaande dienst aanroept
- Een domein dat uiteindelijk verlopen is en door iemand anders is geregistreerd
Dat laatste is het gevaarlijke scenario. Een script dat naar een extern domein verwijst, laadt code van wie dat domein beheert. Verloopt dat domein en pakt iemand het op, dan draait er vreemde JavaScript op je winkel. Dat is een klassieke route voor skimmers. Hoe dat eruitziet lees je in Magecart-skimmers detecteren en verwijderen. Dat artikel gaat over Magento, maar het mechanisme is hetzelfde.
Na elke deïnstallatie
Maak er een vaste routine van:
- Zoek in je themacode naar de naam van de app en naar het domein van de aanbieder.
- Controleer
theme.liquid, snippets en secties op resten. - Controleer app embeds in de thema-editor.
- Kijk in de Shopify-admin of er nog scripttags of webhooks bestaan die naar de oude dienst wijzen.
- Verwijder wat niet meer nodig is, na een back-up van het thema.
Werk je met een thema-bestand in git, dan is dit makkelijker. Een diff laat zien wat er is bijgekomen sinds de app erin zat.
Checkout: extensibility versus oude checkout.liquid
De checkout is de plek waar het meeste op het spel staat. Daar staan betaal- en adresgegevens, en daar wil een skimmer zitten.
Shopify heeft de checkout de afgelopen jaren verplaatst van aanpasbaar via checkout.liquid naar checkout extensibility. Dat is een gestructureerde manier om de checkout uit te breiden met apps en extensies in een afgeschermde omgeving.
Het verschil in beveiligingsopzicht:
- Bij het oude
checkout.liquidkon je vrij eigen JavaScript en HTML in de checkout plaatsen. Dat is krachtig, maar ook een open deur voor scripts van derden. - Bij checkout extensibility draaien extensies binnen kaders die Shopify bepaalt. Je krijgt minder vrijheid en daardoor minder aanvalsoppervlak.
Gebruik je nog oude checkout.liquid-aanpassingen of oude scripts in de checkout? Controleer de actuele status en deadlines bij Shopify zelf, omdat die veranderen. Zien wij dat een merchant nog oude constructies draait, dan stellen we voor die op te ruimen en te vervangen door extensies. Het levert vaak ook een snellere en stabielere checkout op.
Voor betaalpagina's gelden bovendien eisen uit PCI DSS 4.0, zoals inzicht in scripts op de betaalpagina. Hoe dat zit lees je in PCI DSS 4.0 voor webshops. Of en hoe dat voor jou geldt, hangt af van je betaalopzet. Vraag dat na bij je betaalprovider of QSA.
Staff accounts: de andere kant van het slot
Apps zijn één route. Medewerkers zijn de tweede. Elk staff account met veel rechten is een doelwit voor phishing.
Zet dit op orde:
- Geef elk staff account alleen de rechten die nodig zijn voor de rol.
- Gebruik voor iedereen twee-staps verificatie.
- Verwijder accounts van oud-medewerkers en vertrokken freelancers direct.
- Gebruik geen gedeelde accounts.
- Beperk wie apps mag installeren. Dat recht is feitelijk een recht om rechten uit te delen.
Dat laatste wordt vaak vergeten. Een medewerker met het recht om apps te installeren kan met één klik een vreemde partij toegang geven tot klantdata. Beleg dat recht bij één of twee mensen.
Een review-ritme dat je volhoudt
Een eenmalige opschoning helpt een paar maanden. Een ritme houdt het schoon. Een voorbeeld dat past bij een gemiddelde winkel:
| Wanneer | Wat |
|---|---|
| Voor installatie | Scopes lezen, aanbieder checken, vraag: is dit nodig? |
| Na deïnstallatie | Thema, scripttags en embeds controleren |
| Elk kwartaal | Alle apps langs: gebruiken we hem nog, zijn de rechten nog logisch? |
| Elk kwartaal | Staff accounts en rechten nalopen |
| Jaarlijks | Checkout-aanpassingen en externe scripts inventariseren |
Dit kost per kwartaal een uur of twee. Dat is weinig vergeleken met de schade van een datalek.
Vragen bij elke app
Houd een kort lijstje aan:
- Welk probleem lost de app op, en is dat nog actueel?
- Welke scopes vraagt hij, en passen die bij de functie?
- Staat er code in mijn thema of checkout?
- Wie is de aanbieder, en hoe reageren ze op beveiligingsvragen?
- Is er een alternatief zonder app, bijvoorbeeld via een thema-instelling?
Dat laatste punt is onderschat. Soms is de veiligste app de app die je niet installeert. Een functie van twintig regels Liquid hoeft geen externe dienst met toegang tot je klantenbestand.
Wanneer is dit overkill?
Een kleine winkel met drie goedgekozen apps hoeft geen compliance-programma. Wat wel altijd past: twee-staps verificatie, een opgeruimd appoverzicht en het lezen van het toestemmingsscherm.
Heb je veel apps, een grote klantendatabase of een Shopify Plus-omgeving met meerdere koppelingen? Dan loont een gestructureerde review. Er zijn dan meer plekken waar iets kan lekken, en de impact is groter. Zie ook /security/shopify.
Veelgestelde vragen
Welke app-rechten zijn het meest gevoelig?
Alles rond klantgegevens en bestellingen, zoals read_customers en read_orders, en schrijfrechten zoals write_orders en write_themes. Die geven toegang tot persoonsgegevens of laten code in je winkel wijzigen. Vraag bij elk van deze rechten of de functie ze echt nodig heeft.
Is een app uit de Shopify App Store automatisch veilig?
Nee. Shopify beoordeelt apps voor plaatsing, maar je blijft zelf verantwoordelijk voor welke toegang je verleent. Zie een app als een leverancier die je klantdata toevertrouwt, met de bijbehorende afweging.
Blijft er iets achter als ik een app verwijder?
Soms wel. Code in je thema, scripttags en app embeds kunnen blijven staan. Controleer na elke deïnstallatie je themacode en zoek op de naam en het domein van de app.
Moet ik nog iets doen aan oude checkout.liquid-code?
Controleer bij Shopify de huidige status voor jouw winkel en plan de overstap naar checkout extensibility. Minder losse scripts in de checkout betekent minder aanvalsoppervlak.
Hoe vaak moet ik mijn apps controleren?
Minimaal elk kwartaal, plus bij elke installatie en deïnstallatie. Combineer het met een controle van staff accounts.
Wil je dat iemand je Shopify-winkel nakijkt op apps, rechten en resten in je thema? Wij doen dat zonder tussenlagen: je praat direct met degene die in je thema kijkt. Neem contact op via /contact of lees meer over onze Shopify-dienstverlening.

Geschreven door Ruthger Idema
15+ jaar ervaring in e-commerce development. Gespecialiseerd in Magento, Shopify en Laravel maatwerk.
Meer over ons team →


