HOST151: Cache geeft gegevens door aan andere gebruikers
Wat dit betekent
De cache van je hostingprovider kan winkelgegevens van de ene persoon aan een andere tonen.
Er gaat niets verloren op dit apparaat. Vraag je hostingprovider om de API van de winkel niet meer te cachen (zowel adressen met /wp-json/ als met ?rest_route=). Maak daarna opnieuw verbinding als WCPOS geen verbinding heeft gemaakt.
Een cachelaag levert opgeslagen REST API-antwoorden zonder te controleren wie het verzoek doet: de app verstuurde twee testverzoeken met verschillende authenticatiegegevens en kreeg beide keren het antwoord op het eerste verzoek. In een winkel die in gebruik is, betekent dit dat de ene kassamedewerker de gegevens van een andere kan zien. Dit is een probleem in de hostinglaag — WordPress zelf geeft altijd een antwoord per gebruiker.
Als dit gebeurt, probeert de app het opnieuw met een unieke cachesleutel bij elk verzoek. Als daarmee wordt aangetoond dat de sleutel de cache omzeilt, maakt WCPOS verbinding en blijft het de sleutel meesturen — deze melding is dan een waarschuwing dat de cache nog moet worden hersteld. Als een veilige verbinding niet kan worden aangetoond, maakt WCPOS geen verbinding totdat de cache is hersteld.
Je gegevens
Er gaat niets verloren op dit apparaat. Als WCPOS niet kon aantonen dat de verbinding veilig is, maakt het geen verbinding om te voorkomen dat gegevens van de ene persoon aan een andere worden getoond. Alles wat al op dit apparaat staat, blijft daar staan en wordt verzonden zodra er verbinding is.
Problemen oplossen
Voor je hostingprovider of sitebeheerder — de cache moet bij de hostingprovider worden hersteld, ook als WCPOS verbinding heeft gemaakt door de cache te omzeilen:
- Sluit de REST API-paden van de winkel (/wp-json/ en /?rest_route=) uit van paginacaching — schakel bij LiteSpeed REST-caching uit of voeg een no-cache-regel toe; breid bij WP Engine de WooCommerce-uitzondering uit met /wp-json/wcpos en de vorm met ?rest_route=; stel bij Sucuri het cachingniveau zo in dat Cache-Control wordt gerespecteerd.
- De API van de winkel verstuurt al Cache-Control: no-store en Vary: Authorization — de cachelaag negeert deze; wijs de hostingprovider op die headers.
- Leeg de cache nadat je de cache-instellingen hebt gewijzigd. Maak opnieuw verbinding als WCPOS geen verbinding heeft gemaakt.