2009-04-20 13 views
19

यह एक प्राथमिक सवाल किया जाना चाहिए लेकिन क्यों कुछ इस तरह उपयोग करने के लिए बेहतर है:filter_input() का उपयोग करना बेहतर क्यों है?

$pwd = filter_input(INPUT_POST, 'pwd'); 

बस के बजाय:

$pwd = $_POST['pwd']; 

पुनश्च: मैं समझता हूँ कि फ़िल्टर एक्सटेंशन अधिक तर्क के साथ इस्तेमाल किया जा सकता स्वच्छता का एक अतिरिक्त स्तर प्रदान करने के लिए।

+1

प्रश्न स्वीकार किए जाते हैं जवाब से ज्यादा वोट नहीं है। दिलचस्प ... – sMaN

उत्तर

13

यह नहीं है। $_GET, $_POST, $_COOKIE और $_REQUESTfiltered with default filter हैं। अतिरिक्त पैरामीटर के बिना filter_input(INPUT_POST, 'pwd') भी डिफ़ॉल्ट फ़िल्टर का उपयोग करता है। तो बिल्कुल कोई फर्क नहीं पड़ता।

+0

'filter_input' बनाम 'htmlspecialchars' के आसपास देख रहा था और देखा कि यह पुराना प्रतीत होता है। अधिकांश PHP कॉन्फ़िगरेशन अब इस डेटा को फ़िल्टर नहीं करते हैं, आपके द्वारा पोस्ट किए गए लिंक में डिफ़ॉल्ट कॉन्फ़िगरेशन मान भी सेट होता है "unsafe_raw" – cspray

+3

@ चार्ल्स: दोनों मामलों में डेटा डिफ़ॉल्ट फ़िल्टर के माध्यम से गुजरता है। वह डिफ़ॉल्ट अब 'unsafe_raw" होता है। , लेकिन यह इस तथ्य को नहीं बदलेगा कि 'filter_input' का उपयोग बिना 'फ़िल्टर' पैरामीटर के आपको सुरक्षा का कोई अतिरिक्त स्तर नहीं देता है। – vartec

+0

पर्याप्त मेला। जानकारी के लिए धन्यवाद। – cspray

2

ग्राहक से भेजे गए किसी भी डेटा (जैसे POST डेटा) को स्वच्छ किया जाना चाहिए और यह सुनिश्चित करने के लिए कि यह आपकी वेबसाइट को मारने वाला नहीं है, से बच निकला है (और इससे भी बेहतर, स्वच्छता-जांच)।

SQL Injection और Cross-site scripting आपके उपयोगकर्ता द्वारा भेजे गए डेटा को स्वच्छ करने में विफल होने के लिए दो सबसे बड़े खतरे हैं।

+0

क्या आप उपयोगकर्ता द्वारा प्रदत्त डेटा मुद्रित करने से पहले पैरामीटरयुक्त क्वेरी और htmlspecialchars() का उपयोग कर रहे हैं तो filter_input() अभी भी आवश्यक है? – Calvin

+0

filter_input (INPUT_POST, 'pwd'); (किसी भी अन्य तर्क के बिना अभी भी मूल्य को sanitizes? –

+1

@ बेन: आम तौर पर आप सही हैं, लेकिन यह इस सवाल का जवाब नहीं है। – vartec

2

यह बेहतर नहीं है।

कृपया filter_input http://www.php.net//manual/en/function.filter-input.php

पर दस्तावेज़ देख सकेंगे और लिंक पर क्लिक करें "फिल्टर के प्रकार"। http://www.php.net/manual/en/filter.filters.php

मैं ही कभी पूर्णांक फिल्टर का इस्तेमाल किया है ...

$user_id = filter_input(INPUT_POST, 'user_id', FILTER_SANITIZE_NUMBER_INT); 
$user = abs($user_id); // To get rid of any +/- 
संबंधित मुद्दे