हम पंजीकरण फॉर्म में कैप्चा नियंत्रण का उपयोग करते हैं कि हम सर्वर सत्यापन के बगल में जावास्क्रिप्ट (JQuery) के सभी क्षेत्रों के लिए पूर्ण ग्राहक सत्यापन करते हैं ..
मैंने कई तरीकों की कोशिश की लेकिन सभी जावास्क्रिप्ट में कैप्चा मान लिखेंगे जिन्हें एक्सेस किया जा सकता है किसी को भी :(इनके द्वारा
मैं खोज अगर वहाँ किसी भी तरह से है कि मुझे ग्राहक के पक्ष में कैप्चा मूल्य को मान्य सुरक्षित तरीके से JQuery का उपयोग कर या यह नहीं किया जा सकता अनुमति देते हैं?क्या मैं जावास्क्रिप्ट से कैप्चा डेटा को सुरक्षित तरीके से पढ़ सकता हूं?
उत्तर
यह नहीं किया जा सकता।
जावास्क्रिप्ट है क्लाइंट-साइड, जैसा कि आप जानते हैं, और किसी भी कोड क्लाइंट-साइड को संभावित रूप से समझौता किया जाना चाहिए क्योंकि आपके पास इसका नियंत्रण नहीं है।
सबसे अच्छा, आप नमक के साथ मूल्य के नमकीन हश को भेजने का सहारा ले सकते हैं, लेकिन यहां तक कि वास्तव में इसे प्रस्तुत करने से पहले अनुमानित मूल्यों का परीक्षण करने के लिए भी इस्तेमाल किया जा सकता है।
बाकी सब कुछ सर्वर पर कॉल पर निर्भर करता है।
सबसे पहले, सर्वर पर, एक यादृच्छिक स्ट्रिंग नमक के रूप में प्रयोग की जाने वाली गणना:
टिप्पणी अनुरोध के अनुसार, यहां एक सामान्य उपाय है। यह हर अनुरोध लगभग मोटा होना चाहिए। इस स्ट्रिंग का उद्देश्य rainbow table attacks को रोकने के लिए है।
अब, इस स्ट्रिंग को अलग से सहेजते हुए, लेकिन एक और स्ट्रिंग भी बनाएं जो यादृच्छिक स्ट्रिंग और कैप्चा उत्तर का संगतता है। इस नई संयुक्त स्ट्रिंग में से आप हैश उत्पन्न करते हैं (उदाहरण के लिए, SHA-1)।
using System.Web.Security;
...
string hashVal = FormsAuthentication.HashPasswordForStoringInConfigFile(combined, "SHA1");
यादृच्छिक स्ट्रिंग और हैश मान दोनों पेज में रखा जा रहा जावास्क्रिप्ट को पढ़ने में सक्षम होने के लिए की जरूरत है।
ग्राहक पक्ष पर, जब कोई उपयोगकर्ता कैप्चा का उत्तर देता है, तो यादृच्छिक स्ट्रिंग लें और इसे उत्तर के साथ संयोजित करें (यहां विचार प्राप्त करें?)। इस स्ट्रिंग को लेते हुए, आप इसे SHA-1 JQuery plugin जैसे कुछ हैश के लिए उपयोग कर सकते हैं और इसे आपके द्वारा भेजे गए पूर्व-गणना वाले हैश के साथ तुलना कर सकते हैं।
hashVal = $.sha1(combinedString)
यदि यह मेल खाता है, यह (लगभग) निश्चित रूप से सही जवाब है। यदि ऐसा नहीं होता है, तो यह 100% गलत जवाब है।
आप सर्वर पर वर्तमान मान पोस्ट करने के लिए AJAX का उपयोग कर सकते हैं, जो सही या गलत का जवाब देगा। जो आपको वास्तविक पोस्ट करने और HTML में कैटचाचा मान देने से भी रोक देगा।
दुर्भाग्यवश, हम उपयोगकर्ता को एक छिपे तरीके से सर्वर सत्यापन करने के लिए AJAX नहीं करेंगे, इसलिए हम JQuery में किसी अन्य समाधान की खोज करें .. –
मुझे लगता है कि मुझे तब दान से सहमत होना होगा। आपकी स्क्रिप्ट या एचटीएमएल में जवाब देने के बिना ऐसा करने का कोई उचित तरीका नहीं है। –
अकेले JQuery में कोई समाधान नहीं है। केवल सर्वर का उपयोग आपको दिमाग की शांति देगा। – Amadan
मेरा समाधान)) हर बार जब पृष्ठ उपयोगकर्ता को कैप्चा दिखाता है, तो आप गतिशील रूप से obfuscated जावास्क्रिप्ट फ़ंक्शंस उत्पन्न कर सकते हैं (मुझे लगता है कि 5 या 10 का सबसे अच्छा तरीका है)। उदाहरण के लिए, एक फ़ंक्शन (या 3))) पूर्वनिर्धारित हैश (सर्वर इसे वापस कर देता है) के साथ कुकीज़ सेट कर सकता है (कैप्चा के वास्तविक मूल्य से), अन्य फ़ंक्शंस को सर्वर के टाइप एल्गोरिदम का एहसास होना चाहिए ताकि उपयोगकर्ता द्वारा टाइप किए गए मान की जांच हो सके। मैं कह सकता हूं कि यह 100% के लिए काम करता है, क्योंकि गतिशील रूप से जावास्क्रिप्ट को पार्स करना बहुत मुश्किल है + हम क्लाइंट साइड पर उपयोगकर्ता कुकीज़ सेट करते हैं (जावास्क्रिप्ट का उपयोग करके बोट्स को यह पता लगाने के लिए बहुत मुश्किल है कि आप कहां और कैसे सेट करते हैं और चेक करते हैं) ।
क्षमा करें सैफ, लेकिन क्या आप मुझे अपने समाधान –
के बारे में और अधिक समझा सकते हैं आपके पास कैपेचा के लिए सर्वर साइड सरल हैश है: md5 (captcha_srv_side) हमें क्लाइंटसाइड पर हैश के साथ इस हैश से मिलान करने की आवश्यकता है। सबसे आसान तरीका है हमारे हैश पर 2 भागों को विभाजित करना और सर्वर पक्ष द्वारा उपयोगकर्ता कुकी को लिखना ({"v1": "81b ..", "v2": "873f ..."})। अब हमारे पास उपयोगकर्ता कुकीज़ में 2 वर्र्स हैं। हम जावास्क्रिप्ट के कई कार्यों का उपयोग करके बहुत जटिल कोड लिख सकते हैं, फिर इस कोड को खराब कर सकते हैं। जब उपयोगकर्ता कैप्चा में प्रवेश करता है, तो स्क्रिप्ट जेएस इवेंट फ़ंक्शन चलाएगी, जो 2 वर्र्स (v1, v2) को जोड़ती है, उपयोगकर्ता स्ट्रिंग से md5 उत्पन्न करती है, इसे लिखें कुकीज़ के लिए और फिर उन्हें मैच। यह सिर्फ थोड़ा उदाहरण है। कई भिन्नताएं हैं। – Saff
- 1. मैं wfstream से बाइनरी डेटा कैसे पढ़ सकता हूं?
- 2. मैं यूएसबी फ्लैश ड्राइव से डेटा कैसे पढ़ सकता हूं?
- 3. क्या मैं XDomainRequest के माध्यम से ठीक से बाइनरी डेटा पढ़ सकता हूं?
- 4. मैं PHP से पीएनजी मेटाडाटा कैसे पढ़ सकता हूं?
- 5. मैं जावा में यूआरएल से छवि कैसे पढ़ सकता हूं?
- 6. मैं pyqt से जावास्क्रिप्ट को सही तरीके से कैसे वापस कर सकता हूं?
- 7. कैप्चा वैकल्पिक, कितना सुरक्षित?
- 8. ओपनसीवी में एक्सएमएल-स्ट्रिंग से मैं कैसे पढ़ सकता हूं?
- 9. सुरक्षित तरीके से ईमेल भेजें
- 10. मैं अपने सॉफ़्टवेयर को सुरक्षित तरीके से कैसे बंद कर सकता हूं?
- 11. मैं proc फ़ाइल से बड़े डेटा को कैसे पढ़ सकता हूं?
- 12. मैं केकेपीएचपी में सत्र डेटा कैसे बना सकता हूं, लिख सकता हूं और पढ़ सकता हूं?
- 13. मैं पर्ल में एक्सेल फ़ाइलों को कैसे पढ़ सकता हूं?
- 14. मैं फ़ाइल से पहली पंक्ति कैसे पढ़ सकता हूं?
- 15. मैं QTableWidget पर डेटा कैसे दिखा सकता हूं और हेडर के साथ डेटा पढ़ सकता हूं?
- 16. मैं संस्करण नियंत्रण और कोर डेटा मॉडल से कैसे सुरक्षित रूप से संपर्क कर सकता हूं?
- 17. मैं एक COM पोर्ट का अनुकरण कैसे कर सकता हूं, डेटा लिख सकता हूं और उससे डेटा पढ़ सकता हूं?
- 18. मैं पर्ल में निर्देशिकाओं को फिर से कैसे पढ़ सकता हूं?
- 19. क्या मैं जावास्क्रिप्ट में डेटा संपीड़ित कर सकता हूं?
- 20. जावास्क्रिप्ट से स्क्रिप्ट-टैग में मैं JSON कैसे पढ़ सकता हूं?
- 21. क्या मैं एकाधिक कनेक्शन से समेकित SQLite डेटाबेस को पढ़ और लिख सकता हूं?
- 22. मैं PHP के साथ जेपीजी से एक्सएमपी डेटा कैसे पढ़ सकता हूं?
- 23. क्या मैं जावास्क्रिप्ट में गलत तरीके से तारों से बच रहा हूं?
- 24. मूल तरीके से डीबीएफ को कैसे पढ़ और लिखना है?
- 25. क्या मैं किसी वेबसाइट से 'असली' मोबाइल जीपीएस निर्देशांक पढ़ सकता हूं?
- 26. मैं सुरक्षित रूप से फ़ाइल कैसे मिटा सकता हूं?
- 27. मैं .docx फ़ाइल कैसे पढ़ सकता हूं?
- 28. मैं कॉलबैक फ़ंक्शन को स्वीकार करने वाले फ़ंक्शन को कैसे लिख सकता हूं और इसे 'सुरक्षित' तरीके से चला सकता हूं?
- 29. डेटा को सुरक्षित रूप से संग्रहीत करना
- 30. मैं जीपीयू लोड कैसे पढ़ सकता हूं?
दान क्या आप मुझे 'नमकीन हैश समाधान' का उदाहरण दे सकते हैं? –
वास्तव में आप कैप्चा मान का पर्दाफाश करने के लिए हैशिंग का उपयोग कर सकते हैं, लेकिन फिर भी क्लाइंट साइड सत्यापन सक्षम कर सकते हैं।यह केवल उत्तरदायी यूआई के लिए है, और सर्वर पर भी जांच की जानी है। – Dykam
हैश मान को प्रकट करके यह हमलावर को सर्वर पर भेजने के बिना कई अनुमान लगाने में सक्षम बनाता है। इसके अलावा, अगर यह सही अनुमान नहीं मिल सकता है तो यह पृष्ठ को रीफ्रेश कर सकता है। यह हमलावर को कम पहचान दर के साथ बेहतर स्ट्राइक दर प्राप्त करने में सक्षम कर सकता है। –