2009-12-22 15 views
70

यह लंबे समय से रहा है क्योंकि हम जावास्क्रिप्ट का उपयोग करके हमारे फॉर्म मान्य कर रहे हैं। मुझे यकीन है कि यह ज्यादातर अन्य डेवलपर्स के साथ मामला होना चाहिए।क्या जावास्क्रिप्ट सत्यापन खराब है?

प्रश्न:

उपयोगकर्ता (या शायद एक बुरा आदमी) जावास्क्रिप्ट अक्षम कर देता है तो क्या होगा?

आप खो गए हैं!

  • क्या जावास्क्रिप्ट सत्यापन इसके लायक है?
  • क्या हमें कभी इसका इस्तेमाल करना चाहिए?
  • क्या इसके कोई समाधान हैं?

अगर मैं गलत हूं तो मुझे सही करें।

उत्तर

165

क्या जावास्क्रिप्ट सत्यापन इसके लायक है?

हां, क्योंकि यह बेहतर उपयोगकर्ता अनुभव प्रदान करता है और बैंडविड्थ को संरक्षित करता है।

क्या हमें कभी इसका उपयोग करना चाहिए?

हां, उपर्युक्त कारणों से।

क्या इसके कोई समाधान हैं?

हां, सर्वर-साइड सत्यापन का भी उपयोग करें।

+0

सर्वर साइड भी है ले? बहुत काम तो वाई सर्वर सर्वर के साथ नहीं जाते हैं? – Sarfraz

+48

डारिन के उत्तर के बिंदु 1 देखें। –

+6

यही कारण है कि f.e. .NET Framework का सत्यापन भाग मान्यताओं को जोड़ते समय जावास्क्रिप्ट और सर्वर-साइड सत्यापन कोड बनाता है। –

6

जावास्क्रिप्ट का उपयोग करना गलत नहीं है। हम लंबे समय से इसका इस्तेमाल कर रहे हैं। इसका उपयोग क्लाइंट-साइड सत्यापन लागू करने के लिए किया जाता है।

फिर भी, हमें सर्वर-साइड सत्यापन को कार्यान्वित करना चाहिए ताकि खराब व्यक्ति एप्लिकेशन को तोड़ने में सक्षम नहीं होगा।

28

उपयोगकर्ता (या शायद एक बुरा आदमी) जावास्क्रिप्ट अक्षम कर देता है तो क्या होगा?

जैसा कि पहले कहा गया था: बस ग्राहक पर भरोसा न करें। ऐसा कभी मत करो। सर्वर पर सबकुछ फिर से जांचें।

क्या हमें कभी इसका उपयोग करना चाहिए?

हां - तो उपयोगकर्ता तुरंत देखता है कि क्या गलत है। अन्यथा उसे पहले डेटा वापस पोस्ट करना पड़ा जो कुछ समय ले सकता है। जिस तरह से आप अपने सर्वर पर यातायात को कम करते हैं।

यह बस अधिक सहज है।

// संपादित करें: बीटीडब्लू: एएसपी.NET प्रमाणीकरण नियमों में क्लाइंट-साइड और सर्वर सत्यापन दोनों शामिल हैं जहां तक ​​मुझे पता है।

6

क्लाइंट-साइड (जावास्क्रिप्ट) सत्यापन उपयोगिता के बारे में है, और कुछ नहीं। यदि कार्यान्वयन की लागत उपयोगिता में अनुमानित वृद्धि के लायक नहीं है, तो उस पर समय बिताना न करें।हालांकि इन दिनों यह करना बहुत आसान है!

मुझे नहीं लगता कि आप सर्वर-साइड सत्यापन के बिना कर सकते हैं, हालांकि, यह एकमात्र चीज है जो आपको कोई सुरक्षा प्रदान करती है।

9

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

+0

यह मेरा पसंदीदा जवाब है। यह व्यावहारिक और बिंदु है। – Merritt

17

जावास्क्रिप्ट सत्यापन अच्छा है क्योंकि यह एक बेहतर उपयोगकर्ता अनुभव प्रदान करता है।

आप तथापि कभी नहीं उस पर भरोसा करना चाहिए और परवाह किए बिना सर्वर पर सत्यापित करना चाहिए।

3

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

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

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

4

जावास्क्रिप्ट क्लाइंट साइड सत्यापन के लिए उपयोगी है। लेकिन आप केवल उन पर भरोसा नहीं कर सकते हैं। आपको पोस्ट किए गए डेटा के विरुद्ध सर्वर-साइड सत्यापन का उपयोग करना होगा। जावास्क्रिप्ट बस सर्वर पर अनावश्यक पदों को रोकता है।

10

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

हालांकि, यह अभी भी अनदेखा नहीं किया जाना चाहिए क्योंकि हम हर एक अवसर (दर्शकों/ग्राहक) को पकड़ने के इच्छुक हैं और अलग-अलग गिरने से कम से कम बेहतर है।यह अभी भी काम करता है!

एक Microsoft विकास प्लेटफ़ॉर्म उपयोगकर्ता के रूप में, .NET प्लेटफ़ॉर्म पर एक सुविधाजनक समाधान है। इस तरह के मुद्दों पर दोहरी प्रयास की आवश्यकता नहीं है। Page.Validate() और Page.IsValid का उपयोग करके scripting is disabled पर अपने क्लाइंट-साइड सत्यापन का उपयोग करें।

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (Page.IsPostBack) { 
     Page.Validate(); // If you missed, then you got the second chance ... 
    } 
} 

protected void btnSubmit_Click(object sender, EventArgs e) 
{ 
    if (Page.IsValid) { // Confirm you do a proper validation before moving to perform any process 
     Response.Write("Done!"); 
    } 
} 

मुझे आशा है कि इससे मदद मिलेगी।

+1

+1 उत्तर के लिए धन्यवाद, मेरे पास अब बहुत बेहतर विचार है :) – Sarfraz

4

आप सर्वर और क्लाइंट-साइड सत्यापन दोनों को समर्थन देने वाले ढांचे का उपयोग करके बहुत दर्द रहित बना सकते हैं। अतीत में, ASP.NET के लिए मैं इस्तेमाल किया पीटर ब्लम सत्यापनकर्ताओं:

http://peterblum.com/

इस के साथ

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

इस तरह के ढांचे के बिना, जैसा कि अन्य पोस्टर ने इंगित किया है, सत्यापन श्रमिक हो सकता है।

मुझे PHP या अन्य तकनीकों के लिए कुछ भी पता होना चाहिए।

5

आप इस विषय से केवल एक बात जानने के हैं, तो यह इस रहने दो:

कभी - किसी भी परिस्थिति में - ब्राउज़र से विश्वास डेटा और हमेशा सर्वर साइड पर अनुरोध डेटा को मान्य।

क्या हमें कभी इसका उपयोग करना चाहिए?

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

4

आपके पास सत्यापन की कई परतें होनी चाहिए।

मान्यता ग्राहक साइड

पर यह निश्चित रूप से उपयोगी है क्योंकि मान्यता सर्वर से जाने के लिए बिना किया जा सकता है। एक बार सत्यापित होने के बाद अनुरोध सर्वर पर पहुंच जाता है - कुछ ट्रैफिक बचाता है।

सर्वर साइड

पर सत्यापन की तो जावास्क्रिप्ट अक्षम हो जाता है तो सर्वर भी सुरक्षा के एक स्तर शामिल करना चाहिए - आदेश गलत अनुरोध अस्वीकार करने के लिए में मान्यता।

5

आपको इसे अलग-अलग पर सत्यापित करना होगा, जावास्क्रिप्ट फ़ॉर्म को सत्यापित करने के लिए अच्छा है, लेकिन लोग जावास्क्रिप्ट को अक्षम कर सकते हैं, या इसे हैक करने के लिए किसी अन्य जावास्क्रिप्ट का उपयोग कर सकते हैं, इसलिए सर्वर-साइड पर सत्यापन आवश्यक है।

0
Is JavaScript validation worth of it? 

अच्छी तरह से, हाँ यह है।जावास्क्रिप्ट सत्यापन का उपयोग कर खरीदें आप आसानी से ग्राहक की साइट के बारे में किसी भी तरह की जानकारी अधिक से अधिक जावास्क्रिप्ट सत्यापन बेहतर उपयोगकर्ता अनुभव प्रदान करता है ले जा सकते हैं

Should we ever use it now? 

हाँ आप उपयोगकर्ता की वजह से कर सकते हैं वहाँ त्रुटि या क्या वे वास्तविक समय

पर गलत करते देख सकते हैं
Are there any solutions to this? 

हाँ आप भी सर्वर साइड का उपयोग कर सकते validation.But कुछ समय अपने लिए और अधिक समय .it भी असुरक्षित

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