Watch-IP

Beveiliging en API-sleutelbeheer bij Watch-IP

Deze pagina beschrijft de toegangscontroles die momenteel daadwerkelijk zijn geïmplementeerd in de Watch-IP-API: hoe de twee sleuteltypen werken, hoe origins worden afgedwongen, hoe sleutels kunnen worden geroteerd of ingetrokken, en hoe je een beveiligingsprobleem meldt. Er wordt geen compliancecertificering of onafhankelijke beveiligingsaudit geclaimd — er is op het moment van schrijven geen enkele uitgevoerd.

Twee sleuteltypen, twee verschillende controles

Publiceerbare sleutels (gebruikt voor GET /v1/geo en POST /v1/email/validate) zijn bedoeld om in browsercode te draaien en zijn niet geheim — de controle is de lijst met toegestane origins die voor de sleutel is geconfigureerd, gecontroleerd tegen de Origin/Referer-header van het verzoek. Geheime sleutels (gebruikt voor GET/POST /v1/lookup en POST /v1/risk/check) zijn server-naar-server-credentials zonder enige origin-controle, omdat er geen browser-Origin-header is bij een backend-aanroep; behandel een geheime sleutel als een databasewachtwoord, niet als een openbare identificatie. Zie authenticatie voor het verzoekformaat dat elk sleuteltype verwacht.

Hoe origin-beperking wordt afgedwongen

Een verzoek met een publiceerbare sleutel vanaf een origin die niet op de toegestane lijst van de sleutel staat, krijgt een 403 zonder dat een Access-Control-Allow-Origin-header wordt ingesteld. Dat de browser dat antwoord blokkeert voordat de JavaScript van je pagina het kan lezen, is de daadwerkelijke handhaving — de JSON-foutmelding is bijkomstig. Origin-beperking maakt de sleutel zelf niet geheim, en het weerhoudt een niet-browserclient er niet van om een vervalste Origin-header te sturen; het beschermt specifiek het aanroepoppervlak vanuit de browser.

Transport en opslag

Verkeer naar de API en het dashboard is versleuteld tijdens transport (TLS/HTTPS); de API accepteert geen platte HTTP voor met een sleutel geauthenticeerde verzoeken. API-sleutels worden gehasht opgeslagen (SHA-256), niet in platte tekst, zodat een compromittering van de database alleen geen bruikbare sleutelwaarden zou blootleggen.

Rotatie en intrekking

Je kunt een sleutel intrekken of roteren vanuit het dashboard. Intrekking is niet overal onmiddellijk: de geldigheid van een sleutel wordt tot 5 minuten na een opzoeking gecachet, dus een ingetrokken sleutel kan tot 5 minuten na intrekking nog worden geaccepteerd — houd daar rekening mee bij het bepalen hoe snel je toegang kunt afsluiten na een vermoede compromittering, en roteer proactief in plaats van alleen op intrekking te vertrouwen bij een tijdgevoelig incident.

Ratelimiet

Elke sleutel is ratelimietgebonden per klantaccount op een vast venster van één minuut, gedeeld over welke endpoints je ook aanroept — geen budget per route. Dit beperkt de schade die een enkele gelekte of misbruikte sleutel in een korte periode kan aanrichten, hoewel dit op zichzelf geen vervanging is voor het roteren van een gecompromitteerde sleutel.

Een beveiligingsprobleem melden

Stuur een e-mail naar security@watch-ip.com als je denkt dat een sleutel is gecompromitteerd of als je een beveiligingsprobleem in de API of het dashboard hebt gevonden. We voeren momenteel geen openbaar bug-bountyprogramma uit en houden geen certificering van derden aan — als dat verandert, zal deze pagina dat met een datum vermelden, niet met een badge.

Gerelateerde pagina's