سؤال

انا تطوير تطبيق ، محددات مواقع المعلومات في شكل www.example.com/some_url/some_parameter/some_keyword.وأنا أعلم من خلال التصميم أن هناك حد أقصى طول من أن عناوين url هذه سيكون لها (و لا يزال ساري المفعول).يجب التحقق من صحة URL طول مع كل طلب من أجل حماية ضد تجاوز سعة المخزن المؤقت/حقن الهجمات ؟ وأعتقد أن هذا هو واضح نعم ولكن لست خبير أمني لذلك ربما أنا في عداد المفقودين شيء.

هل كانت مفيدة؟

المحلول

إذا كنت لا تتوقع أن المدخلات ، رفض ذلك.

يجب عليك دائما التحقق من صحة المدخلات الخاصة بك ، وبالتأكيد تجاهل أي شيء خارج النطاق المتوقع.إذا كنت تعرف بالفعل أن عنوان URL بصراحة لن تتجاوز مدة معينة ثم رفض ذلك قبل أن يحصل على التطبيق يبدو من الحكمة.

نصائح أخرى

الدفاع في العمق هو مبدأ جيد.ولكن كاذبة التدابير الأمنية سيئة من حيث المبدأ.الفرق يعتمد على الكثير من التفاصيل.

إذا كنت حقا على ثقة من أن أي عنوان URL على N باطل ، ثم كذلك رفض ذلك.ولكن إذا كان هذا صحيحا, و إذا بقية الخاص بك التحقق من صحة المدخلات هو الصحيح, بعد ذلك سوف تحصل على رفض في وقت لاحق على أي حال.لذلك كل هذا الاختيار لا يحتمل ربما لتخفيف الأضرار الناجمة عن بعض الأخطاء الأخرى في التعليمات البرمجية الخاصة بك.فإنه غالبا ما يكون من الأفضل أن تقضي وقتك في التفكير في كيفية تجنب هذه الأخطاء, من التفكير في ما ن قد يكون.

إذا كنت لا تحقق طول, ثم انها لا تزال أفضل عدم الاعتماد على هذا الحد طول في أي مكان آخر في التعليمات البرمجية الخاصة بك.فعل ذلك من الأزواج المختلفة الشيكات أكثر بإحكام معا ، يجعل من الصعب تغيير الحد في النسخة المقبلة ، إذا قمت بتغيير المواصفات و تحتاج إلى قبول أطول عناوين url.على سبيل المثال إذا كان طول الحد يصبح ذريعة لوضع عناوين المواقع على المكدس دون العناية والاهتمام ، ثم قد يكون وضع شخص ما على السقوط.

كيف هل أنت متأكد من ذلك كل URL أطول من N هو غير صالح ؟ إذا كان يمكنك أن تكون على يقين ، ثم أنه لا ينبغي أن يضر إلى حد أنه مثلما التعقل تحقق - ولكن لا تدع هذا يخدعك في التفكير كنت قد منع فئة من استغلال.

الشيء الوحيد الذي أستطيع أن أرى ذلك يمكن أن يسبب مشاكل هو أنه في حين اليوم URL الخاص بك لن تتجاوز N ، لا يمكنك أن تضمن أن هذا لن يكون الحال إلى الأبد.و في سنة ، عندما تعود إلى جعل تحرير تسمح url إلى N+y في الطول ، قد تنسى تعديل url رفض التعليمات البرمجية.

عليك أن تكون دائما الأفضل التحقق من معلمات عنوان URL قبل استخدامها.

Safari, Internet Explorer, فايرفوكس مختلفة ماكس أطوال أنه يقبل.

أنا أصوت الذهاب أقصر من كل ثلاثة.

http://www.boutell.com/newfaq/misc/urllength.html

سحبت من الرابط -

"مايكروسوفت إنترنت إكسبلورر (متصفح) - 2,083 الشخصيات

Firefox (المتصفح) - بعد 65,536 الشخصيات, بار الموقع لم يعد يعرض عنوان URL في ويندوز فايرفوكس 1.5.x.ومع ذلك ، يعد عناوين العمل.توقفت عن الاختبار بعد 100 ، 000 حرفا.

سفاري (متصفح) - على الأقل 80,000 شخصيات العمل."

أعتقد أن هذا قد تعطيك قدر من السلامة وربما يوفر لك قليلا من عرض النطاق الترددي إذا كان الناس لا ترسل أنت مجنون عناوين المواقع الطويلة ، ولكن إلى حد كبير عليك فقط التحقق من صحة البيانات الخاصة بك في التطبيق الفعلي أيضا.مستويات متعددة من الأمن عموما أفضل, ولكن لا نقع في خطأ التفكير في أن لأن لديك (ضعيف) حماية في بداية هذا سوف لا يكون لديك مشاكل مع بقية.

أنا أقول لا.انها مجرد أمنية كاذبة.فقط البرنامج وكذلك التحقق من طلبات الأشياء السيئة.ينبغي أن يكون كافيا.

كما انه لا دليل على المستقبل.

نعم.لو انها طويلة جدا و كنت على يقين ثم رفض ذلك في أقرب وقت ممكن.إذا كنت تستطيع ، رفض ذلك قبل أن يصل التطبيق الخاص بك (على سبيل المثال IISLockdown سوف تفعل هذا).

تذكر لحساب ترميز الأحرف على الرغم من.

أفضل من فحص طول, أعتقد أن عليك التحقق من المحتوى.أنت لا تعرف أبدا كيف كنت تنوي استخدام عنوان URL الخاص بك المخطط في المستقبل ، ولكن يمكنك دائما تطهير المدخلات الخاصة بك.لوضع شيء معقد جدا جدا ببساطة:لا تثق البيانات التي يتم توفيرها للمستخدم.لا تضعها مباشرة في الاستفسارات DB لا eval() أنها لا تأخذ أي شيء كأمر مسلم به.

إذا كنت تعرف صالحة عناوين لا يمكن أن يكون أكثر N بايت ثم يبدو وكأنه وسيلة جيدة بسرعة نرفض عبر موقع البرمجة محاولات دون الكثير من الجهد.

فمن الأفضل للتحقق من صحة ما هو في طلب من التحقق من صحة URL طول.

الاحتياجات الخاصة بك قد يتغير في المستقبل ، وعند هذه النقطة سيكون لديك لإزالة أو تغيير URL طول التحقق من صحة ، وربما إدخال الخلل.

ولو أنه في نهاية المطاف كما ثبت الأمن الضعف, ثم يمكنك تنفيذ ذلك.

حسنا, دعونا نفترض مثل هذا ن موجودا.كما onebyone أشار المشوهة URL أطول من ن الشخصيات سيتم رفض من قبل البعض التحقق من صحة المدخلات على أي حال.ومع ذلك, في نظري, هذا يفتح جديدا للتفكير في شيء:

استخدام هذا الثابت, يمكنك من صحة التحقق من صحة الأخرى.إذا كان البعض التصديقات لم يتمكنوا من الكشف عن بعض عنوان URL غير صالح ، ومع ذلك ، فإن URL أطول من أحرف ن ، ثم عنوان URL هذا يتسبب في خلل و يجب أن تسجل (وربما كلها التطبيق يجب أن تغلق لأنها قد تخلق غير صالح URL قصيرة بما فيه الكفاية).

يا بلدي الكثير من الإجابات على الكثير من النقاط الجيدة ، لذلك انتشرت على الرغم من ذلك اسمحوا لي أن محاولة توحيد كل هذا. tl;dr المنظمة البحرية الدولية ، هذا هو مستوى منخفض جدا الاهتمام طبقة التطبيقات البرمجية.

نعم, رابط يمكن من أي طول ، ولكن في الممارسة العملية المتصفحات لها حد.طبعا على الرغم من أن فقط يحميك من متصفح بناء الهجمات من قبل الناس على استعداد إلى حد أنفسها إلى تلك ناقلات, لذلك أنت بحاجة إلى طريقة التعامل النشط محاولات الهجوم.

حسنا, أنها يمكن أن تحمي ضد تجاوزات المخزن المؤقت.حسنا, فقط إذا كنت تعمل في مستوى منخفض و لا أفكر في مثل هذه المخاوف.معظم اللغات في هذه الأيام دعم سلاسل بشكل جيد و لن يسمح لهم فقط تجاوز.إذا كنت تتعامل مع انخفاض مستوى النظام, في الواقع قراءة البيانات بايت و وضعه في 'سلسلة' نوع ، ثم بالتأكيد, يجب أن يكون لديك طريقة الكشف عن التعامل مع هذا, ولكن ليس من الصعب أن تخصيص الذاكرة و نقل مبالغ في وقت واحد ، فقط تتبع مقدار الذاكرة جانبا.بصراحة إذا كنت تتعامل مع هذا المستوى المنخفض, كنت حقا يجب استخدام شيء آخر.

حسنا حسنا, ماذا عن رفض استنادا إلى سلسلة طول ؟ التعادل الرئيسية عودة إلى هذا احتمال شعور زائف بالأمان.وهذا يعني أن بعض المناطق من قانون قد تحصل على 'قذرة' و يكون عرضة جدا يستغل كنت في محاولة لتجنب.الواضح أنك يجب أن تكون حذرا للتأكد من أن هذا 'العالمية' حد في الحقيقة غير كافية ، ولكن بالنظر إلى أوري الشكل ، قد تكون قادرة على الحصول على تلك 'قطع' تقرير ما أقصى طول ووسط طول فحص (لكل من السلسلة بأكملها ، ومكونات ذلك) ؛ على الأقل بهذه الطريقة ، إذا كان جزء واحد يجب أن تسمح أطول سلسلة من الأسهل التعامل مع هذا التغيير.

هذا لا بالطبع لدينا بعض المزايا في ذلك عن انها سريعة جدا لتكون قادرة على المقارنة بين طول سلسلة ورفض طلب الحق بعيدا...ولكن لا تنسى أن يكون 'تصرفت بشكل جيد' الموقع يجب أن تكون بإرسال استجابة مناسبة يشرح لماذا الملقم يرفض هذا.لكن عمليا هل حقا تعتقد أنك سوف تضطر إلى التعامل مع العديد من هذه الأنواع من 'خطأ' URL, من المؤكد أنها سوف تكون خاطئة في الكثير من الطرق الأخرى.

لسبب ما شعرت بأن لا أقول ما اللغة التي تستخدمها.مستوى عال لغات مثل جافا أو الثعبان بعض جيدة جدا المكتبات في التعامل مع الإنترنت الأشياء'.جافا سوف تمكنك من تحديد أنماط URI ، بما في ذلك استخدام التعابير المنطقية على هذا النمط ، لذلك إذا أردت الاسم في عنوان URL ، هل يمكن أن يكون شيئا مثل @Path("/person/(.{0..100}") للحد من المعلمة إلى 100 حرفا.سأكون مندهشا إذا كان أمثال روبي أو الثعبان لم يكن لديك ما يعادل أنها ترغب في الترويج لنفسها لطيفة 'ويبي لغات.

وأخيرا وبغض النظر عن طول هناك العديد من الأشياء التي سوف تحتاج إلى التحقق من صحة ، ليس فقط طول.الحاجة إلى القلق بشأن طول URI مما تسبب في تجاوز سعة المخزن المؤقت هو مستوى منخفض جدا شيء سوف تحتاج إلى أن تكون عامة جدا ، أي الحاجة إلى التعامل مع أي طلب واحد حتى مع 1GB URI يحتمل;ملاحظة قلت 'تحمل' لا 'تقبل ذلك تمرير ما يصل إلى طبقة التطبيق' ، يمكن أن رفضه هذا المستوى المنخفض ، كما اثار أحداث النظام ربما.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top