क्या कोई मानक लाइब्रेरी विधियां हैं जो विशेष पथवर्ती अनुक्रमों जैसे ../
और ऊपर की ओर निर्देशिका निर्देशिका ट्रैवर्सल के सभी अन्य रूपांतरित रूपों को फ़िल्टर कर सकती हैं, फ़ाइल पथ API इनपुट की सुरक्षा के लिए दिए गए "रूट" पथ के ऊपर से ट्रैवर्सिंग से?जावा (या स्कैला) में ऊपर पथ ट्रैवर्सल को फ़िल्टर करना
मेरे पास एक कक्षा है जिसमें रूट फ़ोल्डर मान सदस्य है, और एक सदस्य फ़ंक्शन जो पथ को रिकर्सलीली हटाने के लिए स्वीकार करता है। मेरा लक्ष्य यह एपीआई सुरक्षित है, इसे प्रदान किए गए किसी भी इनपुट पथ को फ़िल्टर करने में - जो रूट फ़ोल्डर मान के ऊपर पथ में अनुवाद करेगा। इसका उद्देश्य यह है कि इस वर्ग को रूट पथ के तहत फ़ाइलों को हटाने के लिए उदारता से उपयोग किया जाएगा, लेकिन यह रूट पथ के ऊपर कुछ भी छूएगा।
यह व्यापक path traversal attack के समान है।
विधियां जो बहुत ही सीमित हैं (यानी झूठी नकारात्मकताएं हो सकती हैं) मेरे विशिष्ट उपयोग मामले के लिए ठीक हो सकती हैं, अगर यह चीजों को सरल बनाती है, और साथ ही, मेरी वर्तमान ज़रूरतें फाइल सिस्टम पथों के लिए हैं वेब नहीं (हालांकि, एक वेब समानता के लिए मॉड्यूल सैद्धांतिक रूप से यहां काम कर सकता है)।
कैसे आप वेब करने के लिए उन रास्तों को उजागर कर रहे हैं? आम तौर पर, स्प्रिंग जैसे ढांचे उन हमलों के खिलाफ कमजोर पड़ने का एक अच्छा काम करते हैं, इसलिए आपको शायद ही कभी सुरक्षा की कोई अन्य परत जोड़नी पड़ेगी। – Makoto
मैं नहीं हूं। यह बैकएंड से संबंधित एपीआई के लिए है, जिसमें कुछ फ़ाइल हटाना तर्क शामिल है, और इसे ओएस फाइल सिस्टम अनुमतियों की सहायता के बिना किसी दिए गए रूट फ़ोल्डर के बाहर फ़ाइलों को हटाने से बचने की आवश्यकता है। – matanster
हम किस प्रकार के रास्ते यहां बात कर रहे हैं? 'java.nio.file.Path' में उदाहरण के लिए आधार पर सापेक्ष फ़ाइल पथ को समेकित करने के तरीके हैं। – biziclop