Kód jazyka, který vypadal jako Perl
Dne 19. srpna 2026 jsme do souboru .htaccess přidali pravidlo blokující druh souborů, který by se prohlížeči nikdy neměl doručit přímo: zbylé kopie zdrojového kódu, které po úpravě zůstaly v kořeni webu – index.php.bak, zatoulaný config.py, cokoli se skriptovou příponou, u čeho by si návštěvník mohl stáhnout zdrojový kód jako prostý text, místo aby se spustil.
Pravidlo se řídilo příponou souboru: .php, .py, .rb, .pl, k tomu tucet dalších. .pl je Perl. V tomto projektu není ani řádek v Perlu – pravidlo bylo preventivní, ne oprava souboru, který by existoval.
Asi o den později nahlásil návštěvník, že náhledy počítadel jsou rozbité. Všechny, ale jen v jednom jazyce.
To druhé „pl“
stats4u.net volí jazyk pro každého návštěvníka pomocí vyjednávání Accept-Language, ne pevným výchozím nastavením – prohlížeč nastavený na polštinu dostane /pl/ přímo, bez přesměrování, a když nic neodpovídá, web se vrátí k angličtině. Polština je častá shoda: návštěvníků tam přichází tolik, že den rozbitých miniatur nemohl dlouho zůstat bez povšimnutí.
Každý náhled designu je jeden malý soubor na styl a jazyk: cache/preview/2900.pl.svg. Vzor, který měl zachytit something.pl – skript v Perlu – zachytil i 2900.pl následované .svg: číslo stylu, kód jazyka, který se náhodou píše stejně jako skriptová přípona, a pak skutečný typ souboru. Vzor tečka-pl-tečka tyto dva případy nerozliší.
Každý náhled .pl.svg a .pl.png v galerii začal odpovídat 403 Forbidden. Všechny ostatní jazyky zůstaly nedotčené, protože žádný jiný kód jazyka, který tento web používá, nekoliduje s položkou seznamu přípon. Jen ten jeden.
Co se změnilo
pl vypadlo ze seznamu přípon. Seznam dál blokuje každou skutečnou skriptovou příponu, kvůli které má tento projekt důvod se obávat; jazyk už neblokuje.
Stojí za to si to zapsat kvůli tomu, proč se to vůbec stalo: seznam přípon souborů a seznam kódů jazyků pocházejí ze dvou různých slovníků a nic nebrání tomu, aby dvoupísmenná položka znamenala obojí zároveň. Než na webu s jazykovými předponami v cestě něco přidáte do jednoho z nich, porovnejte to s tím druhým. Tady tato kontrola neproběhla a odhalil to až čtenář, který si všiml rozbitých miniatur – a proto teď u přípony pl, která v seznamu chybí, stojí komentář s vysvětlením, takže příští úklid narazí na důvod dřív než na pravidlo.