غير آمن نشر مرة أخرى من عنصر تحكم asp.net على صفحة آمنة مع تجنب المصادقة

StackOverflow https://stackoverflow.com/questions/201796

  •  03-07-2019
  •  | 
  •  

سؤال

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

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

ما هو أفضل وسيلة لتجاوز الأمنية هنا؟ لقد نظرت نشر إلى صفحة مختلفة باستخدام الخاصية PostBackUrl، ولكن إذا لم يكن هذا HTTPS تحصل على "التي تقوم بالإرسال البيانات إلى اتصال غير آمن" رسالة، أي من المستخدمين لا يحبون.

وشكرا على اي مساعدة.

وتحرير: بفضل نيك على اقتراحك من استخدام GET على صفحة البحث. نحن نفعل ذلك بالفعل، ولكن هي التي شيدت سلسلة الاستعلام من قبل مراقبة المدخلات البحث ثم الموجهات. كيف يمكننا بناء سلسلة الاستعلام بدون استخدام إعادة النشر؟ (ومن الواضح أن جافا سكريبت هو خيار ولكن كنت آمل أن تجد آلية بديلة).

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

المحلول 3

وكما اقترح في إجابات أخرى أكثر الطرق الصحيحة للقيام بذلك سيكون لديك السيطرة البحث المدخلات في شكل منفصل التي لديها من وسائل الحصول على وعمل searchresults.aspx. ولكن هذا أمر صعب مع ASPX كما يمكن أن يكون إلا شكل من جانب الخادم واحد على الصفحة.

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

وانها هشة قليلا ولكن بالنسبة لنا أنه يعمل بشكل جيد جدا.

نصائح أخرى

لصفحة البحث التي تريد للتأكد من أن البحث يحدث عن طريق طلب GET. (أي مثل جوجل مع "س" في سلسلة الاستعلام) وهناك احتمالات كنت تفعل POST.

وهكذا تغيير الخاص بك

<form method="post" ...>

إلى

<form method="get" ...>

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

والثانية تريد إنشاء موقع التكوين لك صفحة البحث. إضافة إلى هذا الملف web.config الخاص بك.

<location path="my-search-page.aspx">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>

وهذا يخلق تجاوز خاص لهذا صفحة واحدة وكل شيء داخل علامة موقع يستخدم نفس الهيكل الملف web.config المحدد لتجاوز الملف web.config.

وسوف ترغب في تكرار هذا لكل صفحة تريد السماح لكافة المستخدمين.

إذا صفحة نتائج البحث يتم تنفيذ إعادة النشر سيتم تشغيل الحدث pageload قبل النقر على زر البحث.

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

وهناك عدد قليل من الطرق على مدار هذا جعل البحث شكل أتش تي أم أل عادي وجعل itperform في الحصول على وظيفة ليست و"نيك"

ذكر

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

وهذا الموقع يحتوي على مادة جيدة على الصفحة مثل دورة وتجاوز لها. http://www.15seconds.com/issue/020102.htm

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