Kontaktovať podporu

Odpovedáme e-mailom, zvyčajne do dvoch dní.

Google reCAPTCHA kontroluje toto podanie na ochranu pred zneužitím; údaje sa prenášajú spoločnosti Google. Skript sa načíta až pri otvorení tohto formulára.

← Všetky príspevky

Kód jazyka, ktorý vyzeral ako Perl

O obsahu a jeho overovaní

V tomto článku

Dňa 19. augusta 2026 sme pridali pravidlo do .htaccess blokujúce typ súboru, ktorý by sa nikdy nemal priamo poskytovať prehliadaču: zvyšné kópie zdrojového kódu ponechané po úprave v koreňovom adresári webu — index.php.bak, zatúlaný config.py, čokoľvek s príponou skriptovacieho jazyka, pri čom by si návštevník mohol načítať zdroj ako obyčajný text namiesto spustenia.

Pravidlo porovnávalo príponu súboru: .php, .py, .rb, .pl, a tucet ďalších. .pl je Perl. V tomto projekte nie je ani jediný riadok jazyka Perl — pravidlo bolo preventívne, neopravovalo existujúci súbor.

Približne o deň neskôr návštevník nahlásil, že náhľady počítadiel sú pokazené. Všetky, ale iba v jednom jazyku.

Druhé „pl“

stats4u.net vyberá jazyk pre každého návštevníka vyjednávaním Accept-Language, nie pevným predvoleným jazykom — prehliadač nastavený na poľštinu dostane /pl/ priamo, bez presmerovania, a angličtina je záložný jazyk webu, keď sa nič nezhoduje. Poľština sa zhoduje často: prichádza tam dosť návštevníkov na to, aby deň pokazených miniatúr nemohol zostať dlho nepovšimnutý.

Každý náhľad dizajnu je jeden malý súbor pre každý štýl a jazyk: cache/preview/2900.pl.svg. Vzor určený na zachytenie something.pl — skriptu Perl — zachytil aj 2900.pl nasledované .svg: číslo štýlu, kód jazyka, ktorý sa náhodou píše rovnako ako prípona skriptovacieho jazyka, a potom skutočný typ súboru. Vzor bodka-pl-bodka tieto dve veci nedokáže rozlíšiť.

2900.pl.svg403číslo štýlukód jazykatyp súboru2900.en.svg200odlišný je iba kód jazyka

Každý náhľad .pl.svg a .pl.png v galérii začal odpovedať 403 Forbidden. Každý iný jazyk zostal nedotknutý, pretože žiadny iný jazykový kód používaný týmto webom nekoliduje s položkou zoznamu prípon. Iba tento jediný.

Čo sa zmenilo

pl bolo odstránené zo zoznamu prípon. Stále blokuje každú skutočnú príponu skriptu, ktorej sa tento projekt má dôvod obávať; už neblokuje jazyk.

Oplatí sa to zapísať pre samotný dôvod, prečo sa to stalo: zoznam prípon súborov a zoznam jazykových kódov pochádzajú z dvoch odlišných slovníkov a nič nebráni dvojpísmenovej položke znamenať oboje naraz. Pred pridaním do ktoréhokoľvek zoznamu na webe s jazykovými prefixmi v ceste ho skontrolujte oproti druhému. Táto kontrola sa tu neurobila a na problém upozornil až čitateľ, ktorý si všimol pokazené miniatúry — preto má položka pl, ktorá v zozname chýba, teraz komentár s dôvodom, aby sa ďalšie upratovanie najprv stretlo s dôvodom a až potom s pravidlom.

Reklama