Kontaktovat podporu

Odpovíme e-mailem, obvykle do dvou dnů.

Google reCAPTCHA kontroluje toto odeslání kvůli ochraně před zneužitím; data se přitom předávají společnosti Google. Skript se načte až při otevření tohoto formuláře.

← Všechny články

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ší.

2900.pl.svg403číslo stylukód jazykatyp souboru2900.en.svg200liší se jen kód jazyka

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.

Reklama