2011-08-05 13 views
14

अस्वीकरणfilter_var बनाम htmlentities बनाम htmlspecialchars

इस बारे में है कि क्या हम डेटाबेस इनपुट के लिए भागने की जानी चाहिए सवाल नहीं है। यह शीर्षक में तीन कार्यों के बीच तकनीकी मतभेदों को सख्ती से देख रहा है।

वहाँ this questionhtmlentities() और htmlspecialchars() के बीच अंतर पर चर्चा है। लेकिन, यह वास्तव में filter_var() पर चर्चा नहीं करता है और Google पर मिली जानकारी मुझे "सुनिश्चित करें कि आप उपयोगकर्ता इनपुट से बचने से पहले यह सुनिश्चित करें कि" echo'd! "

मेरे प्रश्न हैं:

  • क्यों htmlspecialchars() और htmlentities() सामान्यतः filter_var() पर इस्तेमाल कर रहे हैं?
  • क्या filter_var() का उपयोग करने से कुछ प्रदर्शन प्रभावित हुआ है?
  • filter_var() अन्य दो विकल्पों के रूप में सुरक्षित नहीं है?
  • वहाँ किसी भी अन्य कारण echod

filter_var($var, FILTER_SANITIZE_FULL_SPECIAL_CHARS);

+1

'htmlentities' /' htmlspecialchars 'आपको चौथे पैरा को' झूठी 'पर सेट करके डबल एन्कोडिंग इकाइयों को रोकने की अनुमति देता है। मुझे नहीं लगता कि यह 'filter_var' के माध्यम से प्राप्त करना संभव है। – ryanve

उत्तर

7

मेरा अनुमान है (गोद लेने के अभाव के बारे में) होने से पहले उपयोगकर्ता इनपुट एन्कोड करने के लिए निम्नलिखित का उपयोग करने के लिए नहीं यह बस क्योंकि फ़िल्टर विस्तार केवल सक्षम होता है हो सकता है है v5.2 के बाद से डिफ़ॉल्ट रूप से, जबकि html * विधियां लंबे समय तक चल रही हैं।

+0

मुझे लगा कि गोद लेने की कमी के लिए यह ऐसा कुछ होगा। लेकिन, अगर एचटीएमएल * विधियों में कुछ गड़बड़ नहीं है तो PHP आंतरिक टीम को 'filter_var' बनाने की आवश्यकता क्यों महसूस हुई? – cspray

+0

क्योंकि filter_var केवल HTML से बचने से कहीं अधिक है। – Stephen

+0

ठीक है, तो इस विशिष्ट कार्यक्षमता को 'filter_var()' में जोड़ने की आवश्यकता क्यों है? – cspray

संबंधित मुद्दे