2009-03-07 13 views
6

मैंने एक ऐसा एप्लिकेशन बनाया है जो एक एएसपी.NET .asmx वेब सेवा का उपयोग करने के लिए क्रूड ऑपरेशन करने के लिए उपयोग करता है। एप्लिकेशन और .asmx एक ही डोमेन पर हैं। मुझे लगता है कि लोग .asmx के पढ़ने के संचालन को दूरस्थ रूप से उपभोग नहीं करते हैं, लेकिन लोगों को यादृच्छिक रूप से सामान हटाना नहीं चाहते !!!ब्लॉक क्रॉस डोमेन asp.net पर कॉल करें .asmx वेब सेवा

मैं उन तरीकों को विभाजित कर सकता हूं जिन्हें मैं सार्वजनिक रूप से सुलभ बनाना चाहता हूं और 'छिपा' वाले 2 वेब सेवाओं में विभाजित करना चाहता हूं। मैं उसी डोमेन पर 'छुपी' .asmx वेब सेवा पर कॉल कैसे लॉक कर सकता हूं जिसमें इसकी मेजबानी की गई है?

अग्रिम धन्यवाद।

संपादित करें: कर सकते हैं इस पर किसी टिप्पणी, लगता है प्रशंसनीय (स्रोत: http://www.slideshare.net/simon/web-security-horror-stories-presentation): अजाक्स HTTP हेडर, सामान्य रूपों खिचड़ी भाषा सेट कर सकते हैं। अजाक्स अनुरोध एक ही डोमेन से होना चाहिए।

तो "x-request-with" "XMLHttpRequest" अनुरोध एक ही डोमेन से होना चाहिए।

+0

क्या आपके पास उस प्रस्तुति के बारे में कोई विशिष्ट प्रश्न है? सबकुछ निश्चित रूप से साइटों से समझौता करने के लिए उपयोग किया जाता है, लेकिन बुनियादी सुरक्षा के साथ आप सुरक्षित हैं। –

+0

हां यह वह हिस्सा है जहां यह कहता है कि आप एक्स-अनुरोध पर भरोसा कर सकते हैं-आपको इसे उसी डोमेन से और इसलिए सुरक्षित से बताने के लिए। ive ने आज भी वही प्रश्न पूछा और हर कोई आश्वस्त है कि किसी भी http शीर्षलेख को धोखा दिया जा सकता है। मुझे बहुत ज़्यादा यकीन नहीं है। वैसे भी, ive ने इसे किसी अन्य तरीके से हल किया (प्रमुख रिफैक्टर) – jdee

+0

लेकिन आपकी मदद के लिए बहुत बहुत धन्यवाद। यह निश्चित रूप से मुझे मेरी असली दुनिया की समस्या को हल करने के लिए सही रास्ते पर डाल दिया। – jdee

उत्तर

8

दो स्थितियों आप वेब सेवाओं के साथ सुरक्षित करने के लिए की आवश्यकता है:

  1. उपयोगकर्ता प्रमाणीकृत है?
  2. क्या मेरे पृष्ठ से कार्रवाई आ रही है?

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

दूसरा परिदृश्य थोड़ा कठिन कहानी है। हमला सीएसआरएफ या एक्सएसआरएफ (क्रॉस साइट अनुरोध फोर्जरी) के रूप में जाना जाता है। इसका अर्थ यह है कि एक दुर्भावनापूर्ण वेबसाइट आपके उपयोगकर्ता की ओर से कार्य करती है जबकि वे अभी भी आपकी साइट पर लॉग इन हैं। Here's a great writeup on XSRF

  1. अपने उपयोगकर्ता की कुकी के लिए एक GUID लिखें:

    जेफ Atwood तरह ऊपर के लिंक में यह सब योग, लेकिन यहाँ चार चरणों में XSRF सुरक्षा है।

  2. अपने AJAX कॉल से पहले, कुकी के बाहर इस मान को पढ़ें और इसे वेब सेवा पोस्ट में जोड़ें।
  3. सर्वर की ओर, कुकी मान के साथ FORM मान की तुलना करें।
  4. क्योंकि साइटें किसी अन्य डोमेन से कुकीज़ नहीं पढ़ सकती हैं, तो आप सुरक्षित हैं।
-1

AJAX में ब्राउज़र कॉल करता है, इसलिए यदि आप यह जांचना चाहते हैं कि डोमेन समान है तो यह पर्याप्त सुरक्षित नहीं होगा क्योंकि इसे आसानी से फिक्र किया जा सकता है।

चीजों को सुरक्षित रखने के लिए आपको कुछ प्रकार के स्वस्थ/औथराइजेशन टोकन (अधिमानतः एक समय के साथ) का उपयोग करने की आवश्यकता है।

+0

क्या आप विस्तृत कर सकते हैं? मैं टोकन सिस्टम का उल्लेख कैसे कर सकता हूं? – jdee

+0

> यह होना चाहिए कि 'मैं आपके द्वारा उल्लेख किए जाने वाले टोकन सिस्टम को कैसे बना सकता हूं?' धन्यवाद – jdee

+0

आपको एक कुंजी जारी करना है कि जब उपयोगकर्ता क्रूड ऑपरेशन का अनुरोध करता है तो AJAX को वापस भेजना पड़ता है। इस कुंजी को थोड़े समय के बाद समाप्त हो जाना चाहिए, इस प्रकार केवल आपके सर्वर से जेनरेट किए गए पृष्ठ कुंजी हैं और ऑपरेशन कर सकते हैं – Sruly

-1

आईआईएस के माध्यम से केवल आपके डोमेन के आईपी पते तक पहुंच की अनुमति देने के लिए त्वरित और गंदे समाधान का उपयोग आईपी एड्रेस प्रतिबंधों का उपयोग करना होगा।

शायद HTTP प्रमाणीकरण का उपयोग बेहतर होगा। ऐसा करने के कई तरीके हैं, मुझे Authentication in ASP.NET Web Services एक उपयोगी अवलोकन मिला।

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