मैं वर्तमान को बदलने के लिए एक PHP स्क्रिप्ट विकसित करता हूं, जिसमें विभिन्न बाजारों/देशों के लिए बहुत अधिक जोखिम होगा। दूसरों के बीच यह स्क्रिप्ट एक फोटो अपलोड कार्यक्षमता प्रदान करता है।PHP छवि अपलोड सुरक्षा दृष्टिकोण
इस मुद्दे के बारे में बहुत कुछ पढ़ने के बाद, मैंने नीचे वर्णित दृष्टिकोण का पालन किया। मैं इसकी सुरक्षा पर आपकी टिप्पणियों की गहराई से सराहना करता हूं।
- तस्वीर को वेब रूट के बाहर एक निजी 777 फ़ोल्डर में अपलोड किया गया है।
- सफेद सूचीबद्ध एक्सटेंशन के लिए एक जांच की जाती है (केवल jpgs, gifs, pngs को अनुमति दें) बाकी सब कुछ हटा दिया जाता है।
- न्यूनतम-अधिकतम आयामों और फोटो वैधता की जांच के लिए getimagesize का उपयोग करें।
- मिमटाइप और फ़ाइल एक्सटेंशन मिलान की जांच करें।
- अपलोड की गई तस्वीर का आकार std आयामों में बदलना (imagecopyresampled का उपयोग करना)।
- बनाई गई फ़ाइलों को jpg के रूप में सहेजना।
- मूल फ़ाइल को हटाने।
- एक नए (यादृच्छिक नाम नहीं) यानी img51244.jpg के साथ फोटो सहेजें।
- गैर-अनुमानित एल्गोरिदम के अनुसार नई तस्वीरों को एक सार्वजनिक फ़ोल्डर (777 अनुमतियों) की परिवर्तनीय उप-निर्देशिकाओं में ले जाएं। आईई,
img10000.jpg
photos/a/f/0/img10000.jpg
पर संग्रहीत किया जाएगा जबकिimg10001.jpg
photos/0/9/3/img10001.jpg
पर संग्रहीत किया जाएगा। यह अन्य कारणों से किया जाता है (स्थिर सामग्री के लिए सबडोमेन का उपयोग या सीडीएन का उपयोग)।
स्क्रिप्ट लिनक्स समर्पित सर्वर पर चलती है।
यहां मेरे यहां कुछ भी नहीं निकलता है। फ़ोल्डर पर 777 अनुमति के अलावा - जैसा कि मैं इसे समझता हूं, अगर इसमें 777 अनुमतियां हैं, तो यह निजी नहीं है। लेकिन जहां तक मैं यह कह सकता हूं, केवल तभी मायने रखता है जब आपके सर्वर से समझौता किया गया था (जो कम से कम इस स्क्रिप्ट के माध्यम से मुझे दिखाई नहीं देता) – jammypeach
777 सुरक्षित नहीं लगता है। Http://stackoverflow.com/questions/3644138/secure-user-image-upload-capabilities-in-php – ajreal
से संबंधित संभावित संभवतः बहुत उदार अनुमतियों को छोड़कर, मेरे लिए बहुत अच्छा लगता है। शायद वे कुछ हद तक सीमित हो सकते हैं? अन्यथा, यह सब कुछ आवश्यक है जो मैं सोच सकता हूं, जिसमें EXIF डेटा –