2010-02-21 9 views
5

नोट: मैं एसक्यूएल इंजेक्शन और अन्यत्र से बचने के आउटपुट का ख्याल रखता हूं - यह प्रश्न केवल इनपुट फ़िल्टरिंग के बारे में है, धन्यवाद।उपयोगकर्ता इनपुट फ़िल्टरिंग - क्या मुझे HTML फ़िल्टर करने की आवश्यकता है?

मैं अपने उपयोगकर्ता इनपुट फ़िल्टरिंग कार्यों को दोबारा करने के बीच में हूं। filter_var() के साथ एक विशेष प्रकार के फिल्टर करने के लिए मिल/पोस्ट पैरामीटर गुजर इससे पहले कि मैं निम्नलिखित है:

  • जांच mb_detect_encoding()
  • साथ पैरामीटर एन्कोडिंग UTF-8 में बदलने का iconv() साथ (// ध्यान न दें) के साथ अगर यह नहीं ASCII या UTF-8 के साथ a function found on GnuCitizen.org
  • strip_tags() के माध्यम से परिणाम पारित
  • स्वच्छ व्हाइट-स्पेस - कोई टैग बिल्कुल अनुमति, Markdown केवल

अब सवाल: क्या यह पैरामीटर को htmLawed या HTML Purifier जैसे फ़िल्टर में पास करने के लिए अभी भी समझ में आता है, या क्या मैं इनपुट को सुरक्षित के रूप में सोच सकता हूं? ऐसा लगता है कि ये दोनों एचटीएमएल तत्वों और विशेषताओं (जो मुझे दिलचस्पी नहीं है, क्योंकि मैं सबकुछ हटाता हूं) की ग्रैन्युलरिटी पर अधिकतर भिन्न होता हूं, लेकिन एचटीएमएलड डॉक्स में 'dangerous characters' के बारे में एक अनुभाग होता है जो बताता है कि कोई कारण हो सकता है इसके प्रयेाग के लिए। इस मामले में, इसके लिए एक साइन विन्यास क्या होगा?

+0

खतरनाक चरित्र यूटीएफ -8 नियंत्रण वर्ण हो सकता है। – Jacco

+0

उनसे छुटकारा पाने के बारे में कोई सुझाव? – djn

+1

मुझे वास्तव में आपका नोट नहीं मिलता है, एसक्यूएल इंजेक्शन एक एसक्यूएल क्वेरी में गंदा उपयोगकर्ता इनपुट को रोकने के बारे में है। वास्तव में बहुसंख्यक बहुसंख्यक खराब इनपुट के कारण होते हैं, आउटपुट नहीं। इन्हें "दांत और सिंक" भेद्यता कहा जाता है। – rook

उत्तर

2

सुरक्षित हैं XSS के कई विभिन्न दृष्टिकोण हैं। एकमात्र क्यों पता होना चाहिए कि शोषण के बावजूद आपका दृष्टिकोण पानी है या नहीं। मैं Free XSS vulnerability Scanner *, या ओपन सोर्स wapiti का उपयोग करने की सलाह देता हूं।

ईमानदार होने के लिए मैं कभी भी स्ट्रिप_टैग() का उपयोग नहीं करूंगा क्योंकि आपको हमेशा जावास्क्रिप्ट निष्पादित करने के लिए HTML टैग की आवश्यकता नहीं होती है! मुझे htmlspecialchars($var,ENT_QUOTES); पसंद है।

उदाहरण के लिए इस XSS की चपेट में है:

$_REQUEST[xss]='" onMouseOver="alert(/xss/)"'; 
:

print('<A HREF="http://www.xssed.com/'.strip_tags($_REQUEST[xss]).'">link</a>'); 

आप क्योंकि आप onmouseover उपयोग कर सकते हैं <> इस मामले में जावास्क्रिप्ट को निष्पादित करने की जरूरत नहीं है, यहां एक उदाहरण हमला है

ENT_QUOTES डबल कोट्स का ख्याल रखेगा जो इस एक्सएसएस भेद्यता को पैच करेगा।

* मैं इस साइट/सेवा से संबद्ध हूं।

+0

बहुत अच्छा मुद्दा! धन्यवाद! मुझे http: // php पर ईवेंट की एक सूची मिली।नेट/मैनुअल/एन/function.strip-tag.php # 82180 और सरणी को एक str_ireplace() में पास कर दिया - इसे इसकी देखभाल करनी चाहिए। – djn

+1

कृपया [पदोन्नति] (http://stackoverflow.com/faq#promotion) दिशानिर्देशों को नोट करें। –

0

मुझे लगता है कि तुम क्या कर रहे हैं, के लिए सुरक्षित है देखने की मेरी बात से कम से कम में कोई एचटीएमएल कोड अपने फिल्टर के माध्यम से मिलना चाहिए

+0

-1 हाँ, लेकिन इन फिल्टरों के बावजूद जावास्क्रिप्ट अभी भी इसे बना सकता है। – rook

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

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