سؤال

أريد التأكد من عدم وصول أي شيء غير مرغوب فيه إلى المُحيل في صفحة الخطأ.

ما الذي يجب أن أتحقق منه للتحقق من صحة رأس http.

أدناه هو الكود الحالي الخاص بي:

// Ensure the referrer header is good
if (this.Request.UrlReferrer.IsWellFormedOriginalString() &&
    this.Request.UrlReferrer.Host.Equals(this.Request.Url.Host))
{

سيؤدي هذا إلى فشل فحص acunetix الذي يستخدم %3C و%3E بدلاً من < و > على سبيل المثال، لذلك من الواضح أنني بحاجة إلى تغطية ترميز html - هل هناك أي شيء آخر أفتقده؟

تحديثيمكنني التقاط جميع عمليات فحص Acunetix باستخدام الكود أدناه:

if (this.Request.UrlReferrer.IsWellFormedOriginalString() &&
    this.Request.UrlReferrer.Host.Equals(this.Request.Url.Host) &&
    !Regex.IsMatch(this.Request.UrlReferrer.ToString(),
                   "%3C",
                   RegexOptions.IgnoreCase))
{
هل كانت مفيدة؟

المحلول

أريد التأكد من عدم وصول أي شيء غير مرغوب فيه إلى المُحيل في صفحة الخطأ.

ثم قم دائمًا بإلغاء HTML لأي سلسلة   —   بما في ذلك عناوين URL المرجعية   —   التي تقوم بإخراجها إلى صفحة الخطأ.

إن محاولة انتقاء وإدخال القائمة السوداء التي تحتوي على أحرف يحتمل أن تكون خطرة على أساس كل حالة على حدة هو أمر عكسي.من المحتمل ألا تتمكن من اكتشاف جميع الهجمات المحتملة، كما أنك لن تسمح بعناوين URL الصالحة دون داعٍ.(من المعقول تمامًا أن يكون لديك عنوان URL يحتوي على "%3C".)

نصائح أخرى

قد يكون this.Request.UrlReferrer فارغًا، إذا لم يتم توفير مُحيل أو لم يشارك.

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