सहायता से संपर्क करें

हम ईमेल से जवाब देते हैं, आम तौर पर दो दिन के अंदर।

Google reCAPTCHA दुरुपयोग से बचाव के लिए इस सबमिशन की जाँच करता है; इसके लिए डेटा Google को भेजा जाता है। स्क्रिप्ट तभी लोड होती है, जब यह फ़ॉर्म खोला जाता है।

← सभी पोस्ट

एक भाषा कोड जो Perl जैसा दिखता था

19 अगस्त 2026 को हमने .htaccess में एक नियम जोड़ा, जो ऐसी फ़ाइलों को रोकता है जिन्हें कभी सीधे ब्राउज़र को नहीं भेजा जाना चाहिए: बदलाव के बाद वेब रूट में पड़ी रह गई सोर्स कोड की कॉपियाँ — index.php.bak, कोई भूली हुई config.py, या स्क्रिप्टिंग एक्सटेंशन वाली कोई भी फ़ाइल, जिसका सोर्स कोई विज़िटर चलाने के बजाय सादे टेक्स्ट के रूप में डाउनलोड कर सकता हो।

नियम फ़ाइल एक्सटेंशन से मिलान करता था: .php, .py, .rb, .pl, और दर्जन भर दूसरे। .pl Perl है। इस प्रोजेक्ट में Perl की एक भी लाइन नहीं है — नियम एहतियात के तौर पर था, किसी मौजूद फ़ाइल को ठीक करने के लिए नहीं।

लगभग एक दिन बाद एक विज़िटर ने बताया कि काउंटर के प्रीव्यू टूटे हुए हैं। सभी के सभी, लेकिन सिर्फ़ एक भाषा में।

दूसरा “pl”

stats4u.net हर विज़िटर के लिए भाषा Accept-Language के ज़रिए तय करता है, किसी तय डिफ़ॉल्ट से नहीं — पोलिश पर सेट ब्राउज़र को सीधे /pl/ मिलता है, बिना किसी रीडायरेक्ट के, और जब कुछ मेल नहीं खाता, तो वेबसाइट अंग्रेज़ी पर लौट आती है। पोलिश अक्सर मेल खाती है: वहाँ इतने विज़िटर पहुँचते हैं कि टूटे थंबनेल वाला एक दिन ज़्यादा देर तक किसी की नज़र से छिपा नहीं रह सकता था।

हर डिज़ाइन प्रीव्यू हर स्टाइल और भाषा के लिए एक छोटी फ़ाइल है: cache/preview/2900.pl.svg। जो पैटर्न something.pl — यानी Perl स्क्रिप्ट — को पकड़ने के लिए बना था, वह 2900.pl से भी मेल खा गया, जिसके ठीक बाद आता है .svg: एक स्टाइल नंबर, एक भाषा कोड जिसकी स्पेलिंग संयोग से एक स्क्रिप्टिंग एक्सटेंशन जैसी ही है, और फिर असली फ़ाइल टाइप। डॉट-pl-डॉट वाला पैटर्न इन दोनों में फ़र्क नहीं कर सकता।

2900.pl.svg403स्टाइल नंबरभाषा कोडफ़ाइल टाइप2900.en.svg200सिर्फ़ भाषा कोड अलग है

गैलरी का हर .pl.svg और .pl.png प्रीव्यू 403 Forbidden लौटाने लगा। बाकी हर भाषा पर कोई असर नहीं पड़ा, क्योंकि यह वेबसाइट जिन भाषा कोड का इस्तेमाल करती है, उनमें से कोई और एक्सटेंशन सूची की किसी एंट्री से नहीं टकराता। बस यही एक।

क्या बदला

pl को एक्सटेंशन सूची से हटा दिया गया। सूची अब भी हर उस असली स्क्रिप्ट एक्सटेंशन को रोकती है जिसकी इस प्रोजेक्ट को चिंता करने की कोई वजह है; बस अब वह किसी भाषा को नहीं रोकती।

यह बात लिख लेने लायक है, खास तौर पर इस वजह से कि ऐसा हुआ ही क्यों: फ़ाइल एक्सटेंशन की सूची और भाषा कोड की सूची दो अलग-अलग शब्दावलियों से आती हैं, और दो अक्षरों की किसी एंट्री को एक साथ दोनों का मतलब रखने से कोई नहीं रोकता। जिस वेबसाइट के पाथ में भाषा का प्रीफ़िक्स हो, वहाँ किसी भी सूची में कुछ जोड़ने से पहले उसे दूसरी सूची से मिलाकर देख लेना चाहिए। यहाँ यह जाँच नहीं की गई थी, और बात तब सामने आई जब एक पाठक ने टूटे थंबनेल देखे — इसीलिए अब सूची में एक टिप्पणी बताती है कि यह एक्सटेंशन उसमें क्यों नहीं है: pl, ताकि अगली साफ़-सफ़ाई में नियम से पहले उसकी वजह सामने आए।

विज्ञापन