Apple fileExistAtPath पर भरोसा करने के खिलाफ अनुशंसा करता है: विधि। अक्सर फ़ाइल को खोलने और फ़ाइल मौजूद न होने पर त्रुटि से निपटने का प्रयास करना बेहतर होता है।
NSFileManager वर्ग संदर्भ
नोट: फ़ाइल सिस्टम की वर्तमान स्थिति या फ़ाइल सिस्टम पर किसी विशेष फ़ाइल के आधार पर व्यवहार को समर्पित करने का प्रयास करने की अनुशंसा नहीं की जाती है। ऐसा करने से विषम व्यवहार या दौड़ की स्थिति पैदा हो सकती है। किसी ऑपरेशन का प्रयास करना बेहतर है (जैसे फ़ाइल लोड करना या निर्देशिका बनाना), त्रुटियों के लिए जाँच करें, और उन त्रुटियों को शालीनतापूर्वक संभालें, इससे यह जानने की कोशिश करें कि ऑपरेशन सफल होगा या नहीं। फ़ाइल सिस्टम रेस स्थितियों के बारे में अधिक जानकारी के लिए, "कोड स्थितियां और सुरक्षित फ़ाइल संचालन" सुरक्षित कोडिंग गाइड में देखें।
इसे रोकने के लिए, प्रोग्राम अक्सर यह सुनिश्चित करने के लिए जांचते हैं कि एक विशिष्ट नाम वाली अस्थायी फ़ाइल लक्ष्य निर्देशिका में पहले से मौजूद नहीं है। यदि ऐसी कोई फ़ाइल मौजूद है, तो अनुप्रयोग इसे हटा देता है या विरोध से बचने के लिए अस्थायी फ़ाइल के लिए एक नया नाम चुनता है। यदि फ़ाइल मौजूद नहीं है, तो अनुप्रयोग लिखने के लिए फ़ाइल खोलता है, क्योंकि सिस्टम रूटीन जो स्वचालित रूप से लिखने के लिए एक फ़ाइल खोलता है, एक नई फ़ाइल बनाता है जो कोई भी मौजूद नहीं है। एक हमलावर, लगातार एक प्रोग्राम चला रहा है, जो उपयुक्त नाम के साथ एक नई अस्थायी फ़ाइल बनाता है, (थोड़ी दृढ़ता और कुछ किस्मत के साथ) जब अंतर अस्थायी फ़ाइल मौजूद नहीं थी, तो यह सुनिश्चित करने के लिए आवेदन के बीच की खाई में फ़ाइल बनाएँ। और जब यह लिखने के लिए इसे खोलता है। अनुप्रयोग फिर हमलावर की फ़ाइल खोलता है और उसे लिखता है (याद रखें, सिस्टम रूटीन एक मौजूदा फ़ाइल खोलता है यदि कोई है, और एक नई फ़ाइल बनाता है केवल अगर कोई मौजूदा फ़ाइल नहीं है)। हमलावर की फ़ाइल में एप्लिकेशन की अस्थायी फ़ाइल की तुलना में अलग-अलग एक्सेस अनुमतियां हो सकती हैं, इसलिए हमलावर तब सामग्री को पढ़ सकता है। वैकल्पिक रूप से, हमलावर के पास पहले से खुली हुई फ़ाइल हो सकती है। हमलावर फ़ाइल को हार्ड लिंक या प्रतीकात्मक लिंक के साथ किसी अन्य फ़ाइल में बदल सकता है (या तो हमलावर या किसी मौजूदा फ़ाइल के मालिक के पास)। उदाहरण के लिए, हमलावर फ़ाइल को सिस्टम पासवर्ड फ़ाइल के प्रतीकात्मक लिंक से बदल सकता है, ताकि हमले के बाद, सिस्टम पासवर्ड को इस बिंदु पर भ्रष्ट कर दिया गया हो कि सिस्टम व्यवस्थापक सहित कोई भी व्यक्ति लॉग इन न कर सके। वैकल्पिक रूप से, हमलावर के पास पहले से खुली हुई फ़ाइल हो सकती है। हमलावर फ़ाइल को हार्ड लिंक या प्रतीकात्मक लिंक के साथ किसी अन्य फ़ाइल में बदल सकता है (या तो हमलावर या किसी मौजूदा फ़ाइल के मालिक के पास)। उदाहरण के लिए, हमलावर फ़ाइल को सिस्टम पासवर्ड फ़ाइल के प्रतीकात्मक लिंक से बदल सकता है, ताकि हमले के बाद, सिस्टम पासवर्ड को इस बिंदु पर भ्रष्ट कर दिया गया हो कि सिस्टम व्यवस्थापक सहित कोई भी व्यक्ति लॉग इन न कर सके। वैकल्पिक रूप से, हमलावर के पास पहले से खुली हुई फ़ाइल हो सकती है। हमलावर फ़ाइल को हार्ड लिंक या प्रतीकात्मक लिंक के साथ किसी अन्य फ़ाइल में बदल सकता है (या तो हमलावर या किसी मौजूदा फ़ाइल के मालिक के पास)। उदाहरण के लिए, हमलावर फ़ाइल को सिस्टम पासवर्ड फ़ाइल के प्रतीकात्मक लिंक से बदल सकता है, ताकि हमले के बाद, सिस्टम पासवर्ड को इस बिंदु पर भ्रष्ट कर दिया गया हो कि सिस्टम व्यवस्थापक सहित कोई भी व्यक्ति लॉग इन न कर सके।