2009-09-15 10 views
5

हम टेक्स्ट बॉक्स में एचटीएमएल या जावास्क्रिप्ट इनपुट करने वाले उपयोगकर्ताओं को रोकना चाहते हैं।एएसपीनेट टेक्स्ट बॉक्स में स्क्रिप्ट के लिए जाँच करें

हम केवल इनपुट को पार्स कर सकते हैं और परी ब्रैकेट की जांच कर सकते हैं। क्या यह सोच रहा था कि ऐसा करने का एक बेहतर तरीका है?

+0

अच्छा प्रश्न - यह आप सुरक्षा की सोच रहे हैं पता चलता है। +1। – David

उत्तर

5

मुझे पता चला है कि एन्कोडेड परी ब्रैकेट के साथ परी ब्रैकेट को प्रतिस्थापित करने से अधिकांश समस्याएं हल होती हैं। लोग reference यहां सभी तरीकों से लोगों को स्क्रिप्ट-साइट स्क्रिप्ट कर सकते हैं। एचटीएमएल और स्क्रिप्ट के किसी भी स्वाद को रोकने के लिए रेगेक्स बनाना असंभव के करीब है।

+1

+1 कुछ भी 'जांचें' न करें, इसके बजाय रास्ते से ठीक से बचें। उपयोगकर्ता कुछ कोण ब्रैकेट टाइप करने में सक्षम होना चाहिए और उन्हें इस तरह के पृष्ठ पर सामान्य कोण ब्रैकेट के रूप में दिखाई देना चाहिए: < >। सही विधि को HtmlEncode कहा जाता है (यदि आपके टेम्पलेट में .NET नियंत्रण स्वचालित रूप से आपके लिए नहीं जा रहे हैं), और यह एम्पर्सेंड और उद्धरण (विशेषता मानों में टेक्स्ट के लिए) को भी प्रभावित करता है। – bobince

2

क्या आप इनपुट सत्यापित करने के लिए नियमित अभिव्यक्ति सत्यापनकर्ता का उपयोग कर सकते हैं?

3

यदि आप पेज सेट करते हैं। ValidateRequest = true तो यह इसे रोक देगा।

.NET संस्करण 1.1 से आगे (मुझे लगता है) यह डिफ़ॉल्ट रूप से सत्य पर सेट है।

+1

ValidateRequest पूरी तरह से, पूरी तरह से फर्जी है, और समस्या की एक खतरनाक गलतफहमी betrays। यह PHP के बहुत-व्युत्पन्न magic_quotes_gpc के समान है जिसमें यह इनपुट परत में आउटपुट समस्या (भागने) को ठीक करने का प्रयास करता है। जादू उद्धरणों की तरह, यह आपके आवेदन को तोड़ देता है (उदाहरण के लिए यदि यह एसओ पर था, तो हम एचटीएमएल ' 'के बारे में बात करने में सक्षम नहीं होंगे), जबकि वास्तव में इसकी सुरक्षा की गारंटी नहीं है (आउटपुट सभी सीधे नहीं आते हैं इनपुट और फिल्टर से बेवकूफ बनाया जा सकता है)। – bobince

+0

मैं जो भी कहता हूं उससे इनकार नहीं करता हूं और लगभग सभी हमारे अनुप्रयोगों में यह वैश्विक स्तर पर बंद हो जाता है और किसी भी इनपुट/आउटपुट को मैन्युअल रूप से मान्य किया जाता है। हालांकि, यह सवाल कहता है "हम टेक्स्ट बॉक्स में एचटीएमएल या जावास्क्रिप्ट इनपुट करने वाले उपयोगकर्ताओं को रोकना चाहते हैं।" ValidateRequest यह करता है। वास्तव में –

+0

। यह सही जवाब है ... बस यह सही सवाल नहीं हो सकता है! – bobince

1

पेज। ValidateRequest इसे तब तक रोक देगा जब तक कि आप इसे बंद नहीं कर देते।

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

http://en.wikipedia.org/wiki/Secure_input_and_output_handling

http://www.owasp.org/index.php/Top_10_2007-A1

अच्छा सुरक्षित कोडिंग प्रथाओं मैं यहाँ शुरू करने और भविष्य में संदर्भ के लिए साइट बुकमार्क होगा के लिए। http://www.owasp.org/index.php/Top_10_2007

0

मैं इस HTML उपयोगिता में आया था। कोड टैग की एक सफेद सूची का उपयोग करता है जिसे दर्ज करने की अनुमति है। स्क्रिप्ट तब इनपुट टेक्स्ट को स्वरूपित करती है और टैग और स्क्रिप्ट को हटा देती है जिसका उपयोग क्रॉस साइट स्क्रिप्टिंग हमलों के लिए किया जा सकता है।

आपके उद्देश्यों के लिए आपको सफेद सूची में कोई टैग नहीं हो सका।

Html utilty

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