सीखने के सभी रास्ते समझें देखें करें बनाएँ उत्तर में असुरक्षित कोड पहचानें यह पाठ किस बारे में है वह उत्तर पहचानें जो चलता तो है पर इस्तेमाल लायक नहीं: कुछ मिटा देता है, कुछ बाहर भेज देता है, या हर इनपुट पर भरोसा कर लेता है।
जमा किया गया एक प्रोग्राम दफ़्तरी सर्वर का अपलोड फ़ोल्डर साफ़ करता है, और उसके साथ आई हर जाँच पास हो गई। अब क्या?
A नमूना फ़ाइलों पर चला लें, फ़ोल्डर साफ़ होते देखें, और उत्तर को सही मान लें। B अभी सही मान लें और चेतावनी वाली एक टिप्पणी जोड़ दें, जो असली सर्वर पर लगाने वाले के काम आए। C तीन तरह के उत्तर मना करें: बिना पूछे मिटाने वाला, डेटा बाहर भेजने वाला, हर इनपुट चला देने वाला।
याद जाँचें यह काम क्यों ज़रूरी है सही होना और सुरक्षित होना दो अलग सवाल हैं, और जाँचें सिर्फ़ पहले का जवाब देती हैं। कोई उत्तर सब कुछ पास करके भी फ़ोल्डर मिटा सकता है, फ़ाइल बाहर भेज सकता है, या उपयोगकर्ता का लिखा कुछ भी चला सकता है। यही बात कहने के पैसे जाँचने वाले को मिलते हैं।
वह पंक्ति बताएँ जो चलते हुए उत्तर को असुरक्षित बनाती है, और उसकी जगह सुरक्षित पंक्ति लिखें।
सही होना और सुरक्षित होना दो अलग सवाल हैं, और जाँचें सिर्फ़ पहले का जवाब देती हैं। कोई उत्तर सब कुछ पास करके भी फ़ोल्डर मिटा सकता है, फ़ाइल बाहर भेज सकता है, या उपयोगकर्ता का लिखा कुछ भी चला सकता है। यही बात कहने के पैसे जाँचने वाले को मिलते हैं।
तीन तरह के उत्तर मना करें: बिना पूछे मिटाने वाला, डेटा बाहर भेजने वाला, हर इनपुट चला देने वाला। कोड में लिखी कोई API key — यानी वह गुप्त शब्द-पंक्ति जिससे कोई सेवा आपको पहचानती है — कोई पासवर्ड, या किसी की निजी जानकारी, अपने आप में गड़बड़ी है। बताएँ कि असली डेटा पर चलने से क्या नुकसान होता, क्योंकि समीक्षा यही है। काम उस उत्तर की समीक्षा करें जो छोटे दफ़्तरी सर्वर का अपलोड फ़ोल्डर साफ़ करता है।
कमज़ोर तरीका नमूना फ़ाइलों पर चलाना, हर पंक्ति पढ़ना, और फ़ोल्डर साफ़ निकला इसलिए उत्तर को सही मान लेना। उस नमूने की सारी फ़ाइलों के नाम उसी के अपने रखे हुए थे।
बेहतर तरीका पंक्ति 14 बताता है, जहाँ फ़ाइल का नाम शेल आदेश में चला जाता है। कहता है कि जिस नाम में एक semicolon — यानी ';' का निशान — हो, उसके बाद का कुछ भी चल जाएगा।
बेहतर तरीका क्यों काम करता है दोनों जवाब मानते हैं कि कोड चलता है। बताता सिर्फ़ एक है कि किसी और के रखे नाम वाली फ़ाइल पर क्या होगा।
बदली हुई स्थिति आज़माएँ एक सहकर्मी ऐसी नोटबुक साझा करता है जो चलती है। दूसरी पंक्ति में उसकी अपनी कुंजी सादे पाठ में लिखी है। वह कहता है कि यह सिर्फ़ जाँच के लिए है। आप क्या लिखेंगे?
अब खुद बनाकर देखें ऐसा एक उत्तर खोजें जो चलता है और फिर भी असुरक्षित है। ठीक वह पंक्ति लिखें, असली डेटा पर वह क्या करती, और उसकी जगह आप कौन-सी सुरक्षित पंक्ति रखेंगे।
जाँच के काम के लिए कोडिंग: 10 में से पाठ 8 आगे किसी प्रोजेक्ट में एक योगदान दें भाग 3 के आख़िर में आपके काम का नमूना बनता है, जिसे आप भेज सकते हैं
मूल या आधिकारिक स्रोत पढ़ें: Python documentation · subprocess security