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

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

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

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

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

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

3

3 إجابة

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

حتى تغيير الخاص بك

<form method="post" ...>

إلى

<form method="get" ...>

The biggest mistake most developers make with search pages is إلىdo a post back. HTTP was designed إلىdo queries or searches through the query string (thus the name), and إلىget a form إلىpost إلىa query string instead of the body you need إلىuse a "GET" method. This way any search device can use your search page, even the browsers search box.

Second you want إلىcreate a special location config for you search page. You add this إلىyour web.config.


    
        
            
        
    

This creates a special override for that one page and everything inside the location tag uses the exact same web.config structure إلىoverride the web.config.

You will want إلىrepeat this for each page you want إلىallow all users to.

2
وأضاف

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

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

هناك عدة طرق حول هذا جعل البحث صيغة html عادية وجعل itperform a GET وليس POST وذكر بواسطة "Nick"

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

This site has a good article on the page like cycle and its overrides. http://www.15seconds.com/issue/020102.htm

1
وأضاف

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

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

انها هشة بعض الشيء ولكن بالنسبة لنا يعمل بشكل جيد للغاية.

0
وأضاف