प्रमाणीकरण से बचते समय एक सुरक्षित पृष्ठ पर एएसपीनेट नियंत्रण से वापस असुरक्षित पोस्ट करें

हम मानक एएसपीनेट फॉर्म प्रमाणीकरण का उपयोग कर रहे हैं। कुछ पृष्ठों को उपयोगकर्ता को लॉग इन करने की आवश्यकता होती है; और इनमें से कुछ पृष्ठ https द्वारा वितरित किए जाते हैं। प्रत्येक पृष्ठ के शीर्ष पर एक खोज नियंत्रण है। जब इसका उपयोग किया जाता है, तो हमें परवाह नहीं है कि उपयोगकर्ता का सत्र समाप्त हो गया है, भले ही वर्तमान पृष्ठ में लॉग इन की आवश्यकता हो।

हालांकि, वर्तमान में, खोज करने पर, अंतर्निर्मित रूप प्रमाणीकरण देखता है कि पृष्ठ को पोस्ट करने के लिए प्रमाणीकरण की आवश्यकता होती है और उपयोगकर्ता को लॉगिन पृष्ठ पर पिछले पृष्ठ के साथ रीडायरेक्ट करता है, खोज परिणाम पृष्ठ नहीं रेफरर के रूप में।

यहां सुरक्षा को छोड़ने का सबसे अच्छा तरीका क्या है? मैंने PostBackUrl प्रॉपर्टी का उपयोग करके एक अलग पृष्ठ पर पोस्टिंग पर विचार किया है, लेकिन यदि यह https नहीं है तो आपको "असुरक्षित कनेक्शन में डेटा पोस्ट कर रहे हैं" संदेश मिलता है, जो उपयोगकर्ता पसंद नहीं करते हैं।

किसी भी मदद के लिए धन्यवाद।

संपादित करें: खोज पृष्ठ पर एक GET का उपयोग करने के आपके सुझाव के लिए निक धन्यवाद। हम इसे पहले से ही कर रहे हैं, लेकिन क्वेरी स्ट्रिंग का निर्माण खोज इनपुट नियंत्रण द्वारा किया जाता है, फिर रीडायरेक्ट करता है। हम पोस्टबैक का उपयोग किये बिना क्वेरी स्ट्रिंग कैसे बना सकते हैं? (जाहिर है जावास्क्रिप्ट एक विकल्प है लेकिन मैं एक वैकल्पिक तंत्र खोजने की उम्मीद कर रहा था।)

3

3 उत्तर

खोज पृष्ठ के लिए आप यह सुनिश्चित करना चाहते हैं कि जीईटी अनुरोध के माध्यम से खोज हो रही है। (यानी क्वेरी स्ट्रिंग में "q" के साथ Google की तरह) संभावना है कि आप एक पोस्ट कर रहे हैं।

तो अपना बदलें

<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
जोड़ा

यदि खोज परिणाम पृष्ठ एक पोस्टबैक कर रहा है तो आपके खोज बटन पर क्लिक करने से पहले पेजेलोड ईवेंट निकाल दिया जाएगा।

तो यदि उन्हें जिस पृष्ठ पर लॉगिन किया गया है, तो लॉगिन कमांड को खोज बटन से पहले चलाया जाएगा, ईवेंट को वापस लॉग इन स्क्रीन पर भेजकर क्लिक करें।

इसके कुछ तरीके हैं जो इस खोज को सामान्य एचटीएमएल फॉर्म बनाते हैं और इसे एक पोस्ट नहीं करते हैं और "निक" द्वारा उल्लिखित किया जाता है

अगर पूरा पृष्ठ किसी .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 की कार्रवाई हो। हालांकि यह एएसपीएक्स के साथ मुश्किल है क्योंकि आपके पास केवल एक पृष्ठ पर एक सर्वर-साइड फॉर्म हो सकता है।

अंत में जिस समाधान में मैं आया, वह बहुत अच्छी तरह से काम करता था, एक एचटीपी मॉड्यूल होना था जो "खोज" बटन पर क्लिक किया गया था (यह देखने के लिए कि क्या उसकी आईडी के साथ एक परम मौजूद है) ने फिर एक क्वेरी स्ट्रिंग बनाई मानदंड पैराम की तलाश में और खोज परिणाम पृष्ठ पर रीडायरेक्ट किया गया। इसका अर्थ यह है कि सभी प्रमाणीकरण/प्रमाणीकरण मॉड्यूल बाईपास किए गए हैं क्योंकि हमने ट्रिगर होने से पहले (असुरक्षित) खोज परिणाम पृष्ठ पर रीडायरेक्ट कहा है।

यह थोड़ा भंगुर है लेकिन हमारे लिए यह बहुत अच्छी तरह से काम करता है।

0
जोड़ा