Cookies voor statistiek en advertenties
We gebruiken cookies voor statistiek en voor advertenties, allebei naar Google. Weigeren verandert niets aan wat je te zien krijgt.Lees de privacypagina
De kleine klusjes die een middag onderbreken: een JWT die gelezen moet worden, een payload die leesbaar moet worden, een tekst die een query moet overleven. Elk hulpmiddel hier rekent op de pagina waar je al bent — en daar gaat het om, want wat een ontwikkelaar in zulke velden plakt is meestal precies wat nooit van zijn machine had mogen komen.
Wat mensen in een Base64-decoder plakken, op volgorde van hoe vaak: een JWT, een Basic Auth-header, de payload van een webhook, een configuratiebestand. Drie van de vier zijn inloggegevens of bevatten ze. Een pagina die dat op een server decodeert heeft ze gezien, en heeft ze in haar verzoeklogboek staan, of iemand dat nu wilde of niet.
Dat is geen theoretisch bezwaar. Het is de reden dat dit hele genre website bij veel bedrijven op de proxy geblokkeerd staat, en dat er waar dat niet zo is meestal een beleidsregel bestaat die niemand leest. Alles op deze pagina is rekenwerk dat een browser zelf kan; het ergens anders laten doen is een keuze, en het is de verkeerde.
De pagina is statische HTML van een CDN. Bij de eerste toetsaanslag laadt een kleine module JavaScript, één keer en daarna uit de cache, en het werk gebeurt in jouw tabblad. Geen enkel verzoek draagt wat je hebt getypt, en dat controleer je in het netwerktabblad in plaats van het van ons aan te nemen.
Twee eerlijke grenzen. De pagina zelf is een verzoek, dus dát je hier was is voor ons en voor je netwerk wel zichtbaar. En de site draagt advertenties en, als je toestemt, statistiek: geen van beide ziet de inhoud van een tekstveld, maar allebei zijn het verzoeken naar derden. Het verschil is dat tussen wat je typt en het feit dat je hier bent: het eerste beweegt nooit, het tweede noodzakelijkerwijs wel.
Als de gegevens het apparaat niet verlaten, is er geen verstrekking aan ons en dus ook geen verwerking in onze opdracht van wat je plakt. Dat is in de praktijk het beslissende punt zodra er een klantrecord, een supportbericht of een payload met persoonsgegevens in het veld staat, en het is de reden dat deze hulpmiddelen bruikbaar zijn waar een serverversie dat niet zou zijn.
Wat er wel gebeurt staat in de privacyverklaring en wordt hier niet mooier gemaakt: het bezoek, de advertentie- en statistiekverzoeken, de toestemming. Dat één hulpmiddel lokaal rekent maakt de hele site niet neutraal — het haalt alleen het zwaarste deel eraf.
Eén pagina die Base64, URL en HTML in beide richtingen achter een keuzelijst zou afhandelen, zou minder pagina’s zijn en slechter. Coderen en decoderen gaan op verschillende manieren mis, worden verschillend uitgelegd en verschillend gezocht: wie een kapotte procentreeks voor zich heeft en wie een query aan het bouwen is, hebben elkaar bijna niets te vertellen.
Daarom heeft elke richting een eigen pagina, met de fouten die erbij horen: wat je doet als Base64 uiteenvalt in bytes die geen tekst zijn, waarom `encodeURIComponent` het uitroepteken laat staan en wat dat met een OAuth-handtekening doet. Zo ontstaat een pagina die het lezen waard is, en dat kan alleen omdat ze niet zes doelgroepen tegelijk bedient.
Zodra de pagina van een hulpmiddel geladen is, gebeurt alles lokaal: het werkt in de trein, in een vliegtuig en achter een bedrijfsproxy die het domein een uur later blokkeert. Er wordt geen service worker geïnstalleerd en er valt niets in te stellen; een pagina die nooit naar buiten belt heeft eenvoudigweg niets te verliezen wanneer de verbinding dat wel doet.
In de praktijk betekent dat dat deze hulpmiddelen juist werken in de situaties waarin een onlinehulpmiddel de verkeerde keuze zou zijn: op een machine van iemand anders, op een netwerk dat je niet vertrouwt, met gegevens die je eigenlijk niet zou moeten verplaatsen. Daar zijn ze voor gemaakt.
Er valt niets te registreren omdat er niets te beheren is. De hulpmiddelen bewaren niets tussen twee bezoeken: het tabblad sluiten wist wat je had getypt, want het bestond nergens anders dan in dat tabblad.
Er is ook geen limiet op de hoeveelheid, en niet uit vrijgevigheid: wij betalen niets voor jouw rekentijd, dus er valt niets te rantsoeneren. Het enige plafond is hoeveel tekst je eigen browser in een veld wil vasthouden.
Op deze pagina’s staat payload, token, hash, query string en Base64 — geen «nuttige lading», geen «samenvatting», geen «bevragingsreeks». Dat is geen gemakzucht: het is de taal waarin Nederlandse teams hierover praten en waarin ze ernaar zoeken.
Waar het gewone woord Nederlands is, staat het Nederlandse woord er: checksum, tijdstempel, teken, tabblad, inspringing, trema. De regel is niet «zo veel mogelijk Nederlands», maar «het woord dat in het gesprek valt»; iets anders levert een keurig vertaalde pagina op die niemand vindt.
Er is geen opmaker voor HTML, CSS of JavaScript, en dat is een besluit en geen gat. Een goede heeft een echte parser nodig; de bibliotheken die daarvoor bestaan wegen meerdere megabytes en zouden een eigen licentie- en laadtijdbeslissing zijn, en een zelfgebouwde sloopt invoer in stilte. De JSON-opmaker is alleen ongevaarlijk omdat die parser al in de browser zit.
Er ontbreekt ook een voorbeeldweergave voor Markdown of HTML. Allebei zouden betekenen dat er vreemde HTML binnen deze pagina wordt gerenderd, en dat is precies wat de pagina voor HTML-entiteiten decoderen met argumenten weigert, omdat zo’n parser netwerkverzoeken kan uitlokken. Een argument dat op de ene pagina geldt, kun je op de volgende niet negeren.
Nee. Elk hulpmiddel in deze sectie rekent op de pagina zelf, en het netwerktabblad is de manier om dat te controleren in plaats van te geloven. De pagina komt van een CDN en de site draagt advertenties, dus er zijn verzoeken: geen daarvan draagt de inhoud van een tekstveld.
Alleen wat je eigen machine aankan. Er wordt niets in een wachtrij gezet, geteld of begrensd, want er is geen server die het werk doet en dus iets zou kunnen tellen. Bij zeer grote invoer denkt het tabblad even na: dat is het enige plafond.
Nee, en er valt ook nergens op in te schrijven. De hulpmiddelen onthouden niets tussen twee bezoeken: het tabblad sluiten wist wat je had getypt, want het bestond nergens anders.
Dat bepaalt jullie beleid, maar het technische antwoord is dat de gegevens de machine niet verlaten, en dat is precies waar zulk beleid meestal over gaat. Moet je het aantonen in plaats van beweren: open het netwerktabblad terwijl je het gebruikt, er valt niets te laten zien.
Omdat er geen bestand is. Het resultaat is tekst op de pagina, klaar om te selecteren en te kopiëren, en er zou niets gewonnen zijn met een knop ertussen. Waar een hulpmiddel wél een bestand maakt, staat de download aan het eind en niet als drempel ervoor.