2010-03-06 11 views
6

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

आवेदन आईआईएस 7.5 पर चल रहा है। क्या एक वेबपैप होना संभव है जिसमें असुरक्षित पृष्ठ (सार्वजनिक क्षेत्र की तरह) और एक सुरक्षित क्षेत्र (जैसे सदस्य क्षेत्र, जिसके लिए लॉगिन की आवश्यकता है) हो? यदि हां, तो मैं इन क्षेत्रों के बीच संचार को कैसे जारी कर सकता हूं?

उदाहरण: मेरा वेबपैप http://foo.abc पर होस्ट किया गया है। मेरे पास http://foo.abc/default.aspx और http://foo.abc/foo.aspx जैसे पृष्ठ हैं।

उसी प्रोजेक्ट में /member/default.aspx जैसे एक पृष्ठ है जो पृष्ठ http://foo.abc/login.aspx पर लॉगिन द्वारा संरक्षित है।

तो मैं पेज /login.aspx और /member/

में सभी पृष्ठों मैं ऐसा कैसे कर सकते हैं के लिए SSL को लागू करने की आवश्यकता होगी? मुझे अभी पता चला है कि आईआईएस 7.5 में एसएसएल प्रमाणपत्र कैसे बनाएं और वेबपैड को बाध्यकारी कैसे जोड़ें। मैं अपने वेबपैप को कैसे बता सकता हूं कि कौन सा पृष्ठ https के साथ कहा जाना चाहिए और http के साथ नहीं। वहां सबसे अच्छा अभ्यास क्या है?

उत्तर

3

यहाँ How to use HTTPS in an ASP.Net Application

से के बाद आप एसएसएल सेटअप/स्थापित है, तो आप रीडायरेक्ट का किसी प्रकार का क्या करना चाहते हैं मिल लो पर जीन पेज https: //। फिर प्रमाणीकरण के बाद उपयोगकर्ता को पर भेजा गया पृष्ठ, यह केवल http: // हो सकता है।

Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender 

    If Request.IsSecureConnection = False And _ 
     Not Request.Url.Host.Contains("localhost") Then 

     Response.Redirect(Request.Url.AbsoluteUri.Replace("http://", "https://")) 
    End If End Sub 

यह एक मास्टर पृष्ठ पर लागू करने के लिए आसान है या सिर्फ सभी पृष्ठों https की आवश्यकता हो सकती है। "लोकलहोस्ट" की जांच करके आप अपने परीक्षण वातावरण में त्रुटि प्राप्त करने से बचेंगे (जब तक कि आपके टेस्ट सर्वर के पास नाम की जांच न हो: "mytestservername")।

3

मैं .NET के साथ काम नहीं करता हूं, लेकिन हमारे पास ऐसी वेबसाइटें हैं जिनके पास समान सेटअप है, जहां कुछ पेज अनएन्क्रिप्टेड हैं और http का उपयोग करके सेवा करते हैं, और पृष्ठों के समूह को इसके बजाय https के साथ परोसा जाता है। यहां कुछ चीजें हैं जो हमने की हैं ... उम्मीद है कि वे सहायक हैं।

  1. आप किसी न किसी प्रकार है कि आपके कोड में विन्यास उत्तीर्ण करने की आवश्यकता है, इसलिए इसे आधार दोनों http या https भाग के URI को जानता है। जैसे यदि आपके सर्वर foo.bar है, तो आप अपने कोड को पता है कि सुरक्षित पृष्ठों https://foo.bar:xxx/ पर रहे हैं ..., और http://foo.bar/ पर असुरक्षित पृष्ठों की आवश्यकता है ...

  2. आप कुछ रीडायरेक्ट अपने जीवन बनाने के लिए के साथ अपने सर्वर को कॉन्फ़िगर कर सकते हैं आसान। जैसे अगर आपके सर्वर में पोर्ट 80 क्षेत्र में कॉन्फ़िगर किया गया है, तो आप पोर्ट 443/xxx पर पोर्ट/44xx को रीडायरेक्ट करते हैं, फिर अपने http पृष्ठों में, आप केवल रिलीज यूआरएल जैसे/xxx का उपयोग कर सकते हैं, और बेस यूआरआई को शामिल नहीं करना है। इसके विपरीत, आप पोर्ट 443 config पुन: निर्देशित में सेटअप/yyy बंदरगाह के लिए 80/yyy, तो अपने https पृष्ठ में, तुम बस सापेक्ष URL का उपयोग कर सकते कर सकते हैं की तरह/yyy

  3. http और https पृष्ठों के बीच पोस्ट: आप नहीं कर सकते पोस्ट रीडायरेक्ट करें, इसलिए आपको अपने फॉर्म तत्व में http या https पृष्ठों के लिए बेस यूआरआई का उपयोग करना होगा। अर्थात। अपने http पृष्ठों में, यदि आप https पर पोस्ट करते हैं, तो आपको फॉर्म तत्व की क्रिया विशेषता में https आधार यूआरआई निर्दिष्ट करना होगा - यह ऊपर बिंदु 1 का कारण है।

  4. जाहिर है कि आपके http और https कोड दोनों को यह जांचने के लिए कुकीज़ की जांच करनी चाहिए कि उपयोगकर्ता लॉग इन है या नहीं, लेकिन आप https पृष्ठों में, सुरक्षित कुकीज़ की जांच करना चाहते हैं - वे कुकीज जो ब्राउज़र केवल https कनेक्शन में भेजे जाएंगे । आपकी सादे-पाठ कुकीज़ स्नीफ हो सकती हैं।

  5. AJAX --- यह मुश्किल है। जावास्क्रिप्ट के सुरक्षा मॉडल के कारण आप क्रॉस-डोमेन AJAX नहीं कर सकते हैं। तो, इसका मतलब है कि यदि आप http में हैं, तो आप AJAX को https में नहीं कर सकते हैं, या इसके विपरीत; पोर्ट परिवर्तन ब्राउज़र द्वारा विभिन्न डोमेन माना जाता है।कार्य-आस-पास हैं, जैसे छुपे हुए आइफ्रेम आदि का उपयोग करना, लेकिन वे समाधान काफी जटिल हैं और अक्सर सुरक्षा छेद होते हैं।

2

बस सावधानी के एक शब्द, तुम सच में एक उत्पादन साइट पर एक स्व-हस्ताक्षरित प्रमाणपत्र का उपयोग नहीं करना चाहिए। आपको आदर्श रूप से एक विश्वसनीय सीए (प्रमाणपत्र प्राधिकरण) से एक प्राप्त करना चाहिए। बड़े नाम वेरिज़िन और थवाएट हैं, लेकिन वहाँ अन्य, सस्ते सीए बाहर हैं।

यदि आप किसी लाइव साइट पर स्वयं हस्ताक्षरित प्रमाणपत्र का उपयोग करते हैं, तो आपके उपयोगकर्ताओं को एक बदसूरत चेतावनी संदेश मिलेगा कि वे आगे बढ़ना चाहते हैं या नहीं।

https पर उपयोगकर्ताओं को रीडायरेक्ट क्षेत्रों, मैं आम तौर पर सिर्फ पृष्ठों मैं सुरक्षित करना चाहते हैं आगे के संदर्भ में (उदाहरण के लिए, यदि कोई उपयोगकर्ता http://domain.com/login.aspx पर जाता है तो मैं तुरंत अनुरोध https://domain.com/login.aspx (Response.Redirect को (रीडायरेक्ट कर दिया जाएगा .. ।)), तो उन्हें एसएसएल क्षेत्र की सुरक्षा से बाहर ले एक बार वे सफलतापूर्वक प्रमाणीकृत कर रहे हैं।

संबंधित मुद्दे