2010-12-29 13 views
7

यह कुछ हद तक एक व्यक्तिपरक सवाल है, लेकिन मैं ऐसा करने के लिए पेशेवरों/विपक्ष सुनना चाहते हैं। मैं Quick and Dirty Feed Parser कहा जाता है एक ओपन सोर्स प्रोजेक्ट प्रबंधन और परियोजना का उद्देश्य यह सहज आरएसएस का उपभोग करने और एटम .NET में खिलाती संभव के रूप में बनाने के लिए है।क्या यह डिफ़ॉल्ट रूप से UnsafeHeaderParsing को सक्षम करने के लिए एक स्वीकार्य अभ्यास है?

मुद्दों मैं परियोजना के विकास में काफी जल्दी पर में भाग से एक था कि फ़ीड मैं परीक्षण मामलों (अर्थात् Hacker News RSS feed) के रूप में उपयोग कर रहा था से कुछ का प्रारूप सही HTTP हेडर इस्तेमाल किया, और .NET में HttpWebRequest वर्ग 1.1 और जब भी आप एक GET अनुरोध में इन शीर्षकों में से एक प्राप्त करते हैं तो तुरंत "असुरक्षित शीर्षलेख" अपवाद फेंकता है।

This change was added in order to put a stop to split-response attacks that were raising security issues at the time .NET 1.1 was released

मेरा मुद्दा इस प्रकार है - मैं "useUnsafeHeader" कॉन्फ़िगरेशन विकल्प प्रोग्रामेटिक रूप से सक्षम कर सकता हूं, लेकिन यह उस एप्लिकेशन के संदर्भ में सभी HttpWebRequests में करता है। मेरे पास ऐसे उपयोगकर्ता हैं जिन्होंने QD फ़ीड पार्सर के बारे में शिकायत की है जो मान्य फ़ीड का उपभोग करने में असमर्थ हैं, और यह हेडर समस्या क्यों है।

अभी मेरी लाइब्रेरी इस तरह से स्थापित है कि डेवलपर्स जो इसका उपयोग करते हैं, उन्हें असुरक्षित हेडर को स्वयं को पार्स करने में सक्षम होना चाहिए, हालांकि उनमें से ज्यादातर को पता नहीं है कि यह समस्या है और यह मेरे लिए एक समर्थन ओवरहेड बनाता है ।

मैं बस क्विक और डर्टी फीड पार्सर को डिफ़ॉल्ट रूप से असुरक्षित हेडर पार्सिंग सक्षम कर सकता हूं और सुरक्षा-प्रशंसनीय उपयोगकर्ताओं को इसे अक्षम करने के लिए मजबूर कर सकता हूं, लेकिन मैं उन उपयोगकर्ताओं को खोलना नहीं चाहता जो सुरक्षा हमलों के लिए बेहतर नहीं जानते हैं । यहां सबसे अच्छा विकल्प क्या है?

+0

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

उत्तर

6

"असुरक्षित" यहाँ थोड़ा चरम है, मैं इस सेटिंग को अलग-अलग नामित करता। समस्या तब आती है जब बीमार व्यवहार वाले सर्वर हेडर को उत्सर्जित करते हैं जो HTTP आरएफसी का बिल्कुल पालन नहीं करते हैं। उदाहरण के लिए आरएफसी का कहना है कि सीआर अक्षरों को एलएफ चरित्र द्वारा पालन किया जाना चाहिए, इसलिए यदि कोई एलएफ नहीं है तो आपको एक निष्पादन नहीं मिलेगा जबतक कि आप "असुरक्षित" हेडर को अनुमति न दें।

अभ्यास में, अधिक HTTP ग्राहकों आदेश यथासंभव अधिक से अधिक सर्वर से बात करने में इन नाबालिग के उल्लंघन की अनदेखी। यही कारण है कि आपका ब्राउज़र या आरएसएस रीडर कभी भी "असुरक्षित" हेडर के बारे में शिकायत नहीं करता है। यहां तक ​​कि यदि हेडर फर्जी हैं, तो .NET क्लाइंट लाइब्रेरी पर्याप्त मजबूत हैं कि उदाहरण के लिए, यदि कोई दुर्भावनापूर्ण हमलावर लाइनफीड को छोड़ देता है तो आप अपने सर्वर को क्रैश करेंगे। :-) तो यहां वास्तव में कोई बड़ी सुरक्षा समस्या नहीं है, जब तक कि (उदाहरण के लिए) आप HTTP शीर्षलेख नामों के साथ गूंगा चीजें करते हैं जैसे उन्हें सीधे अपने HTML में छोड़ दें (जो किसी हमलावर को आपके HTML में XSS हमले को इंजेक्ट करने की अनुमति दे सकता है)।

तो, जब तक आप HTTP शीर्षकों का इलाज करते हैं, जैसे कि वे आपके आवेदन में आने वाले किसी अन्य उपयोगकर्ता द्वारा सबमिट किए गए डेटा (जैसे क्वेरी स्ट्रिंग्स, POST डेटा इत्यादि) के रूप में अविश्वसनीय हैं, तो आपको ठीक होना चाहिए आपके ऐप में "असुरक्षित" हेडर की इजाजत देता है।

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

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