सामान्य रूप से, सभी समझदार डेवलपर्स (,, उचित प्रकार के कास्टिंग मान्य sanitizing आदि) सभी सार्वजनिक विधियों में से इनपुट सुरक्षित करने के लिए कोशिश कर रहे हैंनिजी/संरक्षित तरीकों के इनपुट को सुरक्षित करना?
मेरा प्रश्न है: सत्यापित किया जा रहा भी संरक्षित/निजी तरीकों के लिए पारित पैरामीटर आपके कोड में आप कर रहे हैं ? मेरी राय में यह आवश्यक नहीं है, यदि आप सार्वजनिक तरीकों के उचित पैरामीटर को सुरक्षित करते हैं और बाहर से मूल्य वापस लौटाते हैं (अन्य कक्षाएं, डीबी, उपयोगकर्ता इनपुट इत्यादि ...)।
लेकिन मुझे लगातार फ्रेमवर्क और ऐप्स (यानी एक नाम देने के लिए Prestashop) का सामना करना पड़ रहा है, जहां विधि कॉल में सत्यापन कॉल में अक्सर सत्यापन किया जाता है और एक बार फिर लौटा मूल्य सुरक्षित करने के लिए - जो मुझे लगता है, प्रदर्शन ओवरहेड बना रहा है और खराब डिजाइन का संकेत भी है।
जब तक आप नियमित अभिव्यक्तियों का उपयोग नहीं कर रहे हैं (जो आपको नहीं होना चाहिए) तक आपको सत्यापन से बहुत अधिक प्रदर्शन ओवरहेड नहीं मिलेगा। – Andy
मैंने काफी खराब सत्यापन देखा है, यानी। उल्लेखनीय prestashop में उनके पास उनके ओआरएम में TableOrIdentifier है, जो तालिका/कॉलम नाम की वैधता की जांच करने के लिए regexp का उपयोग करता है और इसे एक वस्तु के अंदर सचमुच दर्जन बार कहा जाता है (और अब सैकड़ों या हजार वस्तुओं को आयात करने की कल्पना करें) –
यदि आप उपयुक्त कर रहे हैं यूनिट परीक्षण का स्तर, फिर कुछ निजी सदस्यों के कुछ सत्यापन को छोड़ना ठीक होगा। हमेशा जोखिम होता है, लेकिन यदि आपका; या एक समीक्षक; कोड के निरीक्षण से पता चलता है कि आपकी डाउनस्ट्रीम धारणा हमेशा कॉलिंग के सार्वजनिक सदस्य क्या कर रही हैं, इसके आधार पर सही होगी। – JoeGeeky