GUID

2009-03-17 13 views
6

के माध्यम से AJAX अनुरोधों को सुरक्षित करना मैं एक वेब ऐप लिख रहा हूं जो AJAX के माध्यम से अनुरोध कर रहा है और उन कॉल को लॉक करना चाहता है। थोड़ा सा शोध करने के बाद, मैं अनुरोध (GUID?) के साथ वापस पारित करने के लिए यादृच्छिक टोकन (स्ट्रिंग) के कुछ रूपों का उपयोग करने पर विचार कर रहा हूं। मेरे एल्गोरिदम के महत्वपूर्ण भाग यहां दिए गए हैं:GUID

  1. एक जावास्क्रिप्ट चर (जेनरेट सर्वर-साइड) में टोकन असाइन करें।
  2. इसके अलावा, उस डीबी में टोकन स्टोर करें और इसे वैध समय अवधि दें (यानी 10 मिनट)।
  3. यदि टोकन अभी भी उपयोग नहीं किया गया है और इसकी वैध समय विंडो में है, तो कॉल को अनुमति दें।
  4. वैध होने पर अनुरोधित जानकारी लौटाएं, अन्यथा, अनुरोध लॉग करें और इसे अनदेखा करें।

सुरक्षा की ओर नजर रखने के साथ, क्या यह समझ में आता है? टोकन के लिए, एक GUID काम करेगा - क्या यह कुछ और होना चाहिए? अनुरोध में चर को एन्क्रिप्ट करने का कोई अच्छा तरीका है?

संपादित करें:

मैं समझता हूँ कि इन AJAX अनुरोध सही मायने में "सुरक्षित" लेकिन मैं अर्थ में बुनियादी सुरक्षा जोड़ने के लिए है कि मैं सेवा मैं इरादा उपयोग करने से रोकने के लिए करना चाहते चाहते हैं नहीं होगा लिखना। यह यादृच्छिक टोकन अपमानजनक कॉल के खिलाफ एक बुनियादी, फ्रंट लाइन रक्षा होगी। जिस डेटा से अनुरोध किया जाएगा (और इस तरह के डेटा उत्पन्न करने के लिए भी सबमिट किया गया है) को बार-बार दोहराने की संभावना नहीं है।

शायद मैं एक GUID का उपयोग करने में गलत हूं ... यादृच्छिक रूप से जेनरेट की गई स्ट्रिंग (टोकन) के बारे में कैसे?

उत्तर

5

यदि आप क्लाइंट ब्राउज़र पर भेजे गए कोड पर विश्वास करने के लिए ऐसा कर रहे हैं, तो दिशा बदलें। आप वास्तव में उपयोगकर्ता इनपुट पर भरोसा नहीं करना चाहते हैं, जिसमें ब्राउज़र से भेजे गए जेएस से कॉल शामिल हैं। सर्वर पर तर्क दिया जाना चाहिए ताकि वहां से कुछ भी गलत नहीं किया जा सके। उस ने कहा, एएसपीनेट एक हस्ताक्षरित क्षेत्र का उपयोग करता है, यदि आप बिल्कुल जरूरी हो तो आप उस तरह से जाना चाहेंगे।

थोड़ा विस्तार: एएसपी।शुद्ध छेड़छाड़-दृश्यमान दृश्य, जिसे एचटीएमएल छिपा हुआ क्षेत्र (कॉन्फ़िगरेशन के आधार पर) के रूप में भेजा जाता है। मुझे यकीन है कि संदर्भ के रूप में बेहतर लिंक हैं, लेकिन कम से कम इस पर इसका उल्लेख किया गया है: http://msdn.microsoft.com/en-us/library/ms998288.aspx

सत्यापन। यह हैशिंग एल्गोरिदम निर्दिष्ट करता है जो पर एचएमएसी उत्पन्न करने के लिए प्रयुक्त होता है और दृश्य प्रमाणीकरण टिकट छेड़छाड़ का सबूत बनाता है। यह विशेषता व्यूस्टेट एन्क्रिप्शन के लिए उपयोग किए गए एन्क्रिप्शन एल्गोरिदम निर्दिष्ट करने के लिए भी उपयोग की जाती है। रूपों प्रमाणीकरण टिकट यदि कॉन्फ़िगर

  • SHA1-SHA1, सबूत छेड़छाड़ करने ViewState प्रयोग किया जाता है,: यह विशेषता निम्नलिखित विकल्पों के समर्थन करता है। जब SHA1 सत्यापन विशेषता के लिए चुना गया है, तो उपयोग किए गए एल्गोरिदम HMACSHA1 है।

कि एल्गोरिथ्म http://msdn.microsoft.com/en-us/library/system.security.cryptography.hmacsha1.hmacsha1.aspx के लिए .net वर्ग के लिए एक लिंक।

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

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

यह कहा गया है कि एएसपीनेट डिफ़ॉल्ट रूप से व्यूस्टेट को मान्य करता है, क्योंकि देव वहां मौजूद जानकारी पर भरोसा करते हैं क्योंकि उन्हें केवल आवेदन द्वारा संभाला जाना चाहिए। यह संभवतः आपके परिदृश्य के लिए लागू होता है, इस तंत्र पर भरोसा न करें। यदि आप मूल्यांकन करना चाहते हैं कि कोई कुछ प्रमाणीकरण + प्रमाणीकरण का उपयोग कर सकता है या नहीं। अगर आप जानना चाहते हैं कि AJAX कॉल केवल वैध विकल्प भेज रहा है, तो उन्हें सत्यापित करें। ग्रैन्युलरिटी स्तर पर एक एपीआई का पर्दाफाश न करें जहां आप उचित रूप से क्रियाओं को अधिकृत कर सकते हैं। यह तंत्र सिर्फ एक अतिरिक्त उपाय है, अगर कुछ फिसल गया है, असली सुरक्षा नहीं है।

Ps। ऊपर HMACSHA1 के साथ, आप इसे एक निश्चित कुंजी

+0

मेरा झुकाव यह है कि आप ठीक उसी बारे में बात कर रहे हैं जो मैं कर रहा हूं। क्या आप विस्तृत कर सकते हैं और संभवतः कुछ लिंक शामिल कर सकते हैं? सहायता के लिए धन्यवाद! – Aaron

+0

अपनी खुद की लाइब्रेरी का उपयोग करके मैं तारों को एन्क्रिप्ट कर सकता हूं, और इसके दिल में यह वही है जो मैं बात कर रहा हूं। आप समझते हैं कि मेरा क्या मतलब है ... क्या आपको लगता है कि मेरा अहंकार पीछा करने लायक है? यदि हां, तो यादृच्छिक अनुक्रम उत्पन्न करने के लिए आप एक अलगाव के रूप में क्या सुझाव देते हैं, या आप अन्य विकल्पों का सुझाव देते हैं? – Aaron

+0

@Aaron ने एक अपडेट जोड़ा, यह एन्क्रिप्ट नहीं करने वाली जानकारी पर हस्ताक्षर करने का एक परिदृश्य है, मुझे लगता है कि आप अपनी लाइब्रेरी में कस्टम क्रिप्टोग्राफी नहीं कर रहे हैं। अनुरोध की पहचान करने की जानकारी यादृच्छिक नहीं है, क्योंकि यह हस्ताक्षरित है। – eglasius

1

"सुरक्षित" एक अस्पष्ट शब्द है। वास्तव में आप क्या हासिल करने की कोशिश कर रहे हैं? एक GUID का उपयोग करना एक ही अनुरोध के डुप्लिकेट सबमिशन को रोकने के लिए एक बिल्कुल सही तरीका है, लेकिन यह सब कुछ है।

यदि ग्राहक और सर्वर के बीच पारित जानकारी वास्तव में संवेदनशील है, तो आपको इसे HTTPS पर करना चाहिए। वास्तव में एकमात्र उत्तर है जहां तक ​​वास्तविक संचार को सुरक्षित करना है।

संपादित करें: GUID "सही" तरीका है या नहीं, इसके बारे में आपके प्रश्न का उत्तर देने के लिए - आपके द्वारा सुझाए जा रहे कार्यों को करने का कोई सही तरीका नहीं है। किसी भी टोकन का उपयोग करना, चाहे वह एक GUID या आपकी खुद की सृष्टि का कुछ हो, उसी अनुरोध के डुप्लिकेट सबमिशन को रोकने के अलावा कोई प्रभाव नहीं पड़ेगा। बस।

+0

के साथ तुरंत चालू करेंगे, मैं केवल प्रत्येक अनुरोध के लिए एक अद्वितीय पहचानकर्ता होने के बारे में बात नहीं कर रहा हूं। मैं एक टोकन की बात कर रहा हूं जैसे एक अस्थायी सत्यापन कुंजी जो अनुरोध की अनुमति देगी या नहीं। – Aaron

1

यह वास्तव में इस बात पर निर्भर करता है कि आप सुरक्षा द्वारा पूरा करने की कोशिश कर रहे हैं। यदि आपका मतलब HTTP अंतराल के अनधिकृत उपयोग को रोकने का मतलब है तो आप इसके बारे में बहुत कम कर सकते हैं क्योंकि उपयोगकर्ता को HTML बनाने के लिए उपयोग की जाने वाली HTML और जावास्क्रिप्ट तक पूर्ण पहुंच होगी।

यदि आप किसी को AJAX अनुरोधों में डेटा को सूँघने से रोकने का मतलब है तो मैं बस SSL का उपयोग करूंगा।

जिस तरह से आप सुझाव दे रहे हैं उसमें एक GUID वास्तव में एक सत्र आईडी कुकी को पुनर्निर्मित कर रहा है।

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