2010-06-22 21 views
5

अभी मैं एक प्रोजेक्ट लिख रहा हूं, और मैं इसे jquery और ajax अनुरोधों के साथ लिखने का इरादा रखता हूं।AJAX अनुरोधों की सुरक्षा

केवल एक चीज, मुझे नहीं पता, क्या यह पर्याप्त सुरक्षित है?

उदाहरण के लिए

, जब मैं उपयोगकर्ता नाम सत्यापित करें, जब नई उपयोगकर्ता पंजीकरण करते समय, मैं jQuery ajax अनुरोध का उपयोग करें,

मैं (json के साथ) डाटाबेस से मौजूदा उपयोगकर्ता नाम की सरणी मिलता है, और फिर, यह सत्यापित करें कि new_username नहीं inArray() मौजूदा username एस के, मैं एक और अनुरोध करता हूं, और उपयोगकर्ता को पंजीकृत करता हूं।

लेकिन सुरक्षा के बारे में क्या? meybe हैकर मेरे if-else कथनों को बदलने का तरीका ढूंढ सकता है, और मेरा पूरा सुरक्षित ब्रेक होगा।

शायद आप इस स्थिति को समझने में मेरी मदद करेंगे?

धन्यवाद

+1

दिलचस्प चर्चा के लिए बहुत बहुत धन्यवाद। और शायद आप क्लाइंट साइड स्क्रिप्ट को बदलने के तरीकों को जानते हैं? क्या इसके लिए कोई उपकरण हैं? – Simon

उत्तर

6

आप कि क्लाइंट-साइड में से किसी क्यों कार्यान्वित कर रहे हैं?

आपको एजेक्स क्वेरी में HTTPS पर उपयोगकर्ता नाम/पासवर्ड भेजना चाहिए और सर्वर को उपयोगकर्ता नाम के लिए केवल पर उपयोगकर्ता नाम की आवश्यकता के साथ जवाब देना चाहिए।

यहां तक ​​कि सुरक्षा को अलग करना, क्या होगा यदि आपके पास लाखों उपयोगकर्ता हैं? आप लॉग इन करने के लिए उन सभी ग्राहकों को उस सूची को भेजने जा रहे हैं?

+0

HTTPS का उपयोग करते समय भी मैं उस संपूर्ण सूची को उपयोगकर्ता को नहीं भेजूंगा; अगर आगंतुक उस सूची को देख सकते हैं (जो भी टूल का उपयोग कर रहे हैं) वे देख सकते हैं कि आपकी साइट पर कौन पंजीकृत है। इसके अलावा, पूरी तरह क्लाइंट-साइड सत्यापन पर भरोसा न करें; जावास्क्रिप्ट को बाईपास करना आसान है। –

+0

यह सिर्फ उदाहरण है, मैं केवल सुरक्षा बिंदु से jquery के काम को समझने की कोशिश करता हूं (अंग्रेजी भाषा गलतियों के लिए खेद है :) – Simon

+2

बस ध्यान रखें कि क्लाइंट पर जो कुछ भी आप करते हैं उसे उपयोगकर्ता द्वारा संशोधित और देखा जा सकता है। किसी भी समय आपको एक सुरक्षित ऑपरेशन करने की आवश्यकता होती है, तो आपको सर्वर को सत्यापित करने की आवश्यकता होती है। HTML तालिका के लिए –

12

(निम्नलिखित मुझे लगता है, कि username आईडी जो के साथ एक उपयोगकर्ता में लॉग इन कर सकते हैं, न उपनाम किसी तरह का है;))

  1. सभी उपयोगकर्ता नाम हो रही है के रूप में JSON बुरा है । फिर एक हमलावर को सभी पंजीकृत उपयोगकर्ता नाम तुरंत मिल जाता है!
    बस उपयोगकर्ता को उपयोगकर्ता नाम भेजें, इसे सत्यापित करें और प्रतिक्रिया के रूप में या तो "मान्य" या "अमान्य" भेजें। यानी, सर्वर पक्ष पर उपलब्धता की जांच करें।

  2. हमेशासर्वर साइड पर उपयोगकर्ता इनपुट को मान्य। जावास्क्रिप्ट को अक्षम किया जा सकता है।

अद्यतन:

यह कोई फर्क नहीं पड़ता jQuery या शामिल नहीं किया गया है। सब कुछ है कि आप ग्राहक लिए भेज (और नहीं है टुकड़ों में बांटा या एन्क्रिप्टेड) ग्राहक द्वारा पढ़ा जा सकता है, यह कोई फर्क नहीं पड़ता कि क्या यह एक XMLHttpRequest या एक "सामान्य" अनुरोध है।

क्या आप अपनी साइट के किसी भी विज़िटर को सभी उपयोगकर्ता नामों के साथ एक HTML तालिका भेज देंगे?मैं :) नहीं उम्मीद


सारांश:

  • केवल डेटा भेजने के लिए, कि ग्राहक का उपयोग करने की अनुमति दी है।
  • सर्वर पक्ष पर उपयोगकर्ता इनपुट मान्य करें।
  • उपयोगकर्ता इनपुट पर भरोसा न करें।
+2

+1! : डी –

+0

नहीं, मैं इसे एक सूची के रूप में भेजता हूं, तालिका नहीं: डी – Simon

+0

बीटीडब्ल्यू, मुझे बहुत सारी साइटें पता हैं जो आगंतुकों को सभी उपयोगकर्ता नाम भेजती हैं; इसे कई मंचों पर 'सदस्य सूची' कहा जाता है। [यहां तक ​​कि SO करता है] (http://stackoverflow.com/users) ;-) –

2

सुरक्षा उन चीजों में से एक है जो संभवतः सर्वर की तरफ से संभव है। AJAX लॉगिन के लिए मेरा सामान्य दृष्टिकोण सर्वर पर एक विधि के लिए उपयोगकर्ता नाम और MD5 या SHA1 हैश पासवर्ड भेजना है जो तब सभी लॉगिन विवरणों का ख्याल रखेगा। उस कार्यान्वयन का विवरण वास्तव में आपकी सर्वर-साइड तकनीक पर निर्भर करेगा, लेकिन अधिकांश वेब एप्लिकेशन ढांचे में ऐसा करने के लिए सुविधाएं हैं। यहां कुछ समाधान भी हो सकते हैं जिनमें क्लाइंट साइड काम को संभालने के लिए जावास्क्रिप्ट पुस्तकालय भी शामिल हैं।

5

अजाक्स सर्वर साइड कोड के प्रतिस्थापन नहीं है। हालांकि AJAX का उपयोग करके लॉग इन और पंजीकरण कार्यक्षमता को कार्यान्वित करना संभव है, फिर भी आपको सर्वर पर डेटा को सत्यापित और स्टोर करने की आवश्यकता होगी।

एक और सेन कार्यान्वयन केवल उस उपयोगकर्ता नाम और पासवर्ड वाले सर्वर को एक https अनुरोध भेज देगा जिस पर सर्वर किसी याय के साथ जवाब देगा।

+0

अजाक्स सर्वर साइड कोड के प्रतिस्थापन नहीं है <<< यह !!! – Incognito

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