Hubungi dukungan

Kami membalas melalui e-mail, biasanya dalam dua hari.

Google reCAPTCHA memeriksa kiriman ini untuk mencegah penyalahgunaan; data dikirim ke Google. Skrip hanya dimuat saat formulir ini dibuka.

← Semua artikel

Kode bahasa yang tampak seperti Perl

Pada 19 Agustus 2026 kami menambahkan aturan ke .htaccess yang memblokir jenis file yang tidak boleh disajikan langsung ke browser: salinan sisa kode sumber yang tertinggal di web root setelah pengeditan — index.php.bak, sebuah file tercecer config.py, apa pun dengan ekstensi skrip yang memungkinkan pengunjung mengambil kode sumbernya sebagai teks biasa alih-alih menjalankannya.

Aturan itu mencocokkan ekstensi file: .php, .py, .rb, .pl, dan belasan lainnya. .pl adalah Perl. Proyek ini tidak memiliki satu baris pun kode Perl — aturan itu bersifat pencegahan, bukan perbaikan untuk file yang memang ada.

Sekitar sehari kemudian, seorang pengunjung melaporkan bahwa pratinjau penghitung rusak. Semuanya, tetapi hanya dalam satu bahasa.

“pl” yang lain

stats4u.net memilih bahasa untuk setiap pengunjung melalui negosiasi Accept-Language, bukan bawaan tetap — browser yang diatur ke bahasa Polandia disajikan /pl/ secara langsung, tanpa pengalihan, dan bahasa Inggris menjadi pilihan cadangan situs jika tidak ada yang cocok. Bahasa Polandia sering menjadi hasil yang cocok: cukup banyak pengunjung yang tiba di sana sehingga sehari dengan gambar mini yang rusak tidak mungkin lama luput dari perhatian.

Setiap pratinjau desain adalah satu file kecil per gaya dan bahasa: cache/preview/2900.pl.svg. Pola yang dimaksudkan untuk menangkap something.pl — skrip Perl — juga cocok dengan 2900.pl yang diikuti .svg: nomor gaya, kode bahasa yang kebetulan dieja sama dengan ekstensi skrip, lalu jenis file sebenarnya. Pola titik-pl-titik tidak dapat membedakan keduanya.

2900.pl.svg403nomor gayakode bahasajenis file2900.en.svg200hanya kode bahasanya yang berbeda

Setiap pratinjau .pl.svg dan .pl.png di galeri mulai menjawab 403 Forbidden. Semua bahasa lain tidak terpengaruh, karena tidak ada kode bahasa lain yang digunakan situs ini yang bertabrakan dengan entri di daftar ekstensi. Hanya yang satu itu.

Apa yang berubah

pl dikeluarkan dari daftar ekstensi. Aturan itu masih memblokir setiap ekstensi skrip sungguhan yang perlu dikhawatirkan proyek ini; aturan itu tidak lagi memblokir sebuah bahasa.

Hal ini layak dicatat karena alasan terjadinya: daftar ekstensi file dan daftar kode bahasa berasal dari dua kosakata yang berbeda, dan tidak ada yang mencegah entri dua huruf memiliki kedua arti sekaligus. Sebelum menambahkan sesuatu ke salah satu daftar di situs yang memiliki awalan bahasa di jalurnya, periksalah terhadap daftar yang lain. Pemeriksaan itu belum dilakukan di sini, dan seorang pembaca yang melihat gambar mini rusak itulah yang mengungkapnya — itulah sebabnya pl, yang kini tidak lagi ada di daftar, diberi komentar yang menjelaskan alasannya, sehingga pembersihan berikutnya akan bertemu alasannya sebelum bertemu aturannya.

Iklan