كيف يمكن تحديد عدد الأحرف التي يقرأها StreamReader.ReadLine () في .NET؟
-
03-07-2019 - |
سؤال
أكتب تطبيق خادم ويب بلغة C # وأستخدم فئة StreamReader للقراءة من NetworkStream الأساسي: Genacodicetagpre
هذا الرمز عرضة لهجمات DoS لأنه إذا لم يقطع المهاجم الاتصال ، فلن ننتهي من قراءة السطر.هل هناك أي طريقة للحد من عدد الأحرف التي يقرأها StreamReader.ReadLine () في .NET؟
المحلول
سيتعين عليك استخدام التحميل الزائد لرمز الكود العام (والذي يحد من الطول) والقيام باكتشاف نهاية السطر بنفسك ؛لا ينبغي أن تكون خادعة للغاية.
للإصدار البطيء قليلاً (الذي يستخدم نسخة القراءة ذات الأحرف الفردية): Genacodicetagpre
نصائح أخرى
قد تحتاج إلى أحد التحميل الزائد لرمز الترميز العام:
مأخوذة من http://msdn.microsoft.com/en-us/library/9kstw824.aspx
Genacodicetagpreركز على سطر الترميز العام.يقرأ هذا فقط 5 أحرف من الدفق ويتم إدخالها في مصفوفة الترميز العام.قد ترغب في تغيير 5 إلى القيمة التي تريدها.
هذا هو الحل الخاص بي الذي يعتمد على الحل بواسطة مارك جرافيل: Genacodicetagpre
يتم توفير هذا الجزء من الشفرة "كما هو" بدون أي ضمان.
يمكنك دائمًا استخدام ".Read (...)" وتوصي MSDN بفعل ذلك في موقف مثل حالتك.
http://msdn.microsoft.com/en-us/library/system.io.streamreader.readline.aspx