Contact met ondersteuning

Wij antwoorden per e-mail, meestal binnen twee dagen.

Google reCAPTCHA controleert deze inzending op misbruik; daarbij worden gegevens naar Google gestuurd. Het script laadt pas wanneer dit formulier wordt geopend.

← Alle berichten

Wat stats2.gif werkelijk is

In de afbeeldingsmap van dit project staat een bestand met de naam stats2.gif. Het is 366 bytes groot, gedateerd maart 2018, en het komt in precies nul regels broncode voor. Op 23 augustus 2026 is het 2.735 keer met een 200 uitgeleverd, vanaf 145 verschillende websites — en over de volle omloop van het toegangslogboek vanaf 858.

Een bestand waarnaar niemand verwijst, dat duizenden keren per dag vanaf honderden pagina's van vreemden wordt opgehaald. De voor de hand liggende lezing: een oude insluiting die mensen nooit vervangen hebben en die stilletjes een vast plaatje uitlevert waar ooit een teller stond. Vaste bestanden gaan volledig om PHP heen. Niets wat Apache rechtstreeks bereikt, kan iets tellen.

Dus hebben we een werktuig geschreven. Het leest elke verwijzende pagina uit het logboek, haalt elk ervan op door dezelfde controleur die de site al voor insluitdiagnoses gebruikt — met zijn SSRF-beveiligingen, want die adressen komen uit een logboek en niet van ons — en kijkt of er op de pagina werkelijk iets telt.

Alle 858 pagina's

telt al (een werkende insluiting ernaast)501
helemaal niet bereikbaar288
insigne aanwezig, geen tellernummer in de bron69
alleen het oude insigne, niets dat telt0
telt al501onbereikbaar288pictogram, geen nummer69het geval waar we naar zochten: 0

Geen enkele. Vijfenzeventig minuten ophalen, en het antwoord was nee.

De meting die één seconde kost

stats2.gif is 13 bij 14 pixels.

Dat is geen teller en geen insigne met een getal erop. Het is het kleine statistiekpictogram — hetzelfde dat ontwerp 981 in de huidige galerie nabouwt, en de broncommentaar van dat ontwerp beschrijft zijn voorouder precies: geen zichtbaar aantal, alleen een klein teken dat bij een klik de statistieken opent. Het was nooit bedoeld om te tellen. Op die pagina's deed altijd iets anders dat.

Het bestand is ook niet kapot. Het antwoordt met 200, met een Last-Modified uit 2018 en een jaar cachetijd. Het doet zijn werk.

Eén aanroep van getimagesize() maakt die hele onderzoekslijn in een seconde af. Hier was de vraag "waarom wordt dit bestand zo vaak opgehaald", was het aangenomen antwoord "omdat het een kapotte teller is", en rustte alles daarna op de aanname in plaats van op het bestand — en dat maakt de controle van één seconde het waard om als eerste te doen.

Het ene ding dat werkelijk kapot is

Uit alles bij elkaar toonde het logboek één echt gebrek: één adres, tien keer per dag opgevraagd, allemaal 410, waarbij een heel insluitfragment in de href van de link terecht was gekomen. Iemand heeft de code in een veld geplakt dat HTML ontsnapt. Hun teller leeft en telt — alleen hun eigen link naar hun eigen statistieken leidt nergens heen.

Het werktuig blijft, zonder zijn schrijfpad. De vraag was terecht; het antwoord is nee; en allebei zijn ze het bewaren waard, zodat niemand het nog eens met de hand hoeft te vragen.

Advertentie