Kontaktoni mbështetjen

Përgjigjemi me email. Zakonisht brenda dy ditësh.

Për mbrojtje nga abuzimi, Google reCAPTCHA kontrollon këtë dërgesë. Gjatë kësaj, të dhënat i transmetohen kompanisë Google. Skripti ngarkohet vetëm kur hapet ky formular.

← Të gjitha postimet

Një kod gjuhe që dukej si Perl

Për përmbajtjen dhe kontrollin e saj

Në këtë artikull

Më 19 gusht 2026 shtuam një rregull te .htaccess që bllokonte një lloj skedari që nuk duhet t'i dërgohet kurrë drejtpërdrejt shfletuesit: kopje të mbetura të kodit burimor në rrënjën e uebit pas redaktimit — index.php.bak, një config.py, çdo skedar me prapashtesë skripti nga i cili një vizitor mund të merrte kodin burimor si tekst të thjeshtë në vend që ta ekzekutonte.

Rregulli përputhej sipas prapashtesës së skedarit: .php, .py, .rb, .pl, dhe një duzinë të tjera. .pl është Perl. Ky projekt nuk ka asnjë rresht Perl — rregulli ishte masë paraprake, jo rregullim për një skedar ekzistues.

Rreth një ditë më vonë, një vizitor raportoi se pamjet paraprake të numëruesve ishin prishur. Të gjitha, por vetëm në një gjuhë.

„pl“ tjetër

stats4u.net e zgjedh gjuhën për çdo vizitor duke negociuar përmes Accept-Language, jo sipas një parazgjedhjeje fikse — një shfletues i caktuar në polonisht merr /pl/ drejtpërdrejt, pa ridrejtim; anglishtja përdoret kur nuk përputhet asgjë. Polonishtja përputhet shpesh: aq shumë vizitorë mbërrijnë aty sa një ditë me miniatura të prishura nuk mund të kalonte gjatë pa u vënë re.

Çdo pamje paraprake dizajni është një skedar i vogël për çdo stil dhe gjuhë: cache/preview/2900.pl.svg. Modeli që duhej të kapte something.pl — një skript Perl — përputhej edhe me 2900.pl pasuar nga .svg: një numër stili, një kod gjuhe që rastis të shkruhet njësoj si prapashtesa e një skripti dhe më pas lloji i vërtetë i skedarit. Një model pikë-pl-pikë nuk i dallon dot.

2900.pl.svg403numri i stilitkodi i gjuhëslloji i skedarit2900.en.svg200ndryshon vetëm kodi i gjuhës

Çdo pamje paraprake .pl.svg dhe .pl.png në galeri filloi të kthente 403 Forbidden. Çdo gjuhë tjetër mbeti e paprekur, sepse asnjë kod tjetër gjuhe që përdor ky uebsajt nuk përplaset me një zë në listën e prapashtesave. Vetëm njëri.

Çfarë ndryshoi

pl u hoq nga lista e prapashtesave. Ajo ende bllokon çdo prapashtesë skripti të vërtetë për të cilën ky projekt ka arsye të shqetësohet; nuk bllokon më një gjuhë.

Ia vlen të shkruhet pse ndodhi: lista e prapashtesave të skedarëve dhe lista e kodeve të gjuhëve vijnë nga dy fjalorë të ndryshëm dhe asgjë nuk e pengon një zë me dy shkronja t'i nënkuptojë të dyja njëherësh. Përpara se të shtoni diçka në njërën listë në një uebsajt me prefikse gjuhësh në shteg, kontrollojeni kundrejt tjetrës. Ky kontroll nuk ishte bërë këtu dhe problemi doli sepse një lexues vuri re miniaturat e prishura — prandaj pl, që tani mungon në listë, ka një koment që shpjegon arsyen, që pastrimi i ardhshëm të hasë arsyen përpara rregullit.

Reklamë