फ़ॉर्म को वास्तव में क्या सुरक्षित करता है: CAPTCHA, हनीपॉट, समय जाल, CSRF
अधिकांश संपर्क फ़ॉर्म स्पैम रोकने के एक उपाय पर निर्भर हैं और कई उपाय केवल सरलतम बॉट रोकते हैं। हर सुरक्षा परत क्या रोकती है, उसका खर्च क्या है और कौन-सा संयोजन उपयोगी है।
संपर्क फ़ॉर्म का स्पैम शायद ही किसी व्यक्ति द्वारा हाथ से टाइप किया जाता है। अधिकतर सॉफ़्टवेयर फ़ॉर्म ढूँढ़कर हर फ़ील्ड भरता और परिणाम भेजता है—हज़ारों बार। कई बचाव हैं और वे अलग-अलग बिंदुओं पर काम करते हैं। हर उपाय वास्तव में क्या करता है, यह जानकर दो गलतियों से बच सकते हैं: वास्तविक सुरक्षा के बिना फ़ॉर्म और इतना कठोर सुरक्षित फ़ॉर्म कि असली लोग हार मान लें।
- हनीपॉट: हर फ़ील्ड भरने वाले सरल बॉट
- समय जाल: लोड होते ही सबमिट करने वाली स्क्रिप्ट
- CAPTCHA: अधिकांश सामान्य स्वचालन
- CSRF टोकन: सीधे एंडपॉइंट पर भेजे अनुरोध
- दर सीमा: एक स्रोत से अत्यधिक सबमिशन
- प्रूफ़ ऑफ़ वर्क: ट्रैकिंग या पहेली के बिना सस्ते बड़े पैमाने के सबमिशन रोकना
- सर्वर की जाँच: ब्राउज़र को दरकिनार करने वाली हर चीज़
- लक्षित बॉट इसे छोड़ते हैं; ठीक से न छिपे होने पर स्क्रीन रीडर इसे पढ़ते हैं
- प्रतीक्षा करने वाले बॉट; सर्वर के हस्ताक्षर के बिना आसानी से नकली बनाया जा सकता है
- सभी के लिए बाधा, सुगम्यता की रुकावटें, अक्सर तीसरा पक्ष; हल करने वाली सेवाएँ उपलब्ध हैं
- पहले पृष्ठ लोड करने वाले बॉट को भी वैध टोकन मिलता है
- कई IP पतों में फैला स्पैम
- कंप्यूटिंग शक्ति वाला दृढ़ प्रेषक; JavaScript आवश्यक है
- अकेले कुछ नहीं—लेकिन इनके बिना हर दूसरी परत केवल सजावट है
हनीपॉट और समय जाल: अदृश्य फ़िल्टर
हनीपॉट ऐसा अतिरिक्त फ़ील्ड है जो लोग कभी नहीं देखते, जैसे CSS से छिपा “website” नाम का फ़ील्ड। सरल बॉट हर फ़ील्ड भरते हैं, इसलिए भरा हनीपॉट स्वचालन का संकेत देता है और सर्वर चुपचाप संदेश हटा सकता है। आपकी साइट के लिए लिखे बॉट या ब्राउज़र की तरह पृष्ठ रेंडर करने वाले बॉट इसे छोड़ते हैं। ठीक से छिपाएँ: केवल स्क्रीन से बाहर ले जाया फ़ील्ड स्क्रीन रीडर पढ़ सकता है, Tab से उस तक पहुँचा जा सकता है या ऑटोफ़िल भर सकता है। aria-hidden, tabindex -1 और autocomplete off इस्तेमाल करें तथा वहाँ पहुँचने वाले को खाली छोड़ने के लिए कहने वाला तटस्थ लेबल दें।
समय जाल दर्ज करता है कि फ़ॉर्म कब दिया गया और अविश्वसनीय रूप से तेज़ आए सबमिशन अस्वीकार करता है। लोगों को पढ़ने और टाइप करने में कुछ सेकंड लगते हैं; कई स्क्रिप्ट सेकंड के अंश में भेजती हैं। टाइमस्टैम्प सर्वर पर जाँचना और छेड़छाड़ से बचाना आवश्यक है, जैसे हस्ताक्षर करके या सत्र में रखकर—साधारण छिपे समय फ़ील्ड को बॉट बदल देता है। सीमा कम रखें, क्योंकि ऑटोफ़िल असली लोगों को भी तेज़ बनाता है। केवल प्रतीक्षा करने वाले बॉट निकल जाते हैं: समय जाल फ़िल्टर है, दीवार नहीं।
CAPTCHA: प्रभावी, लेकिन बिना लागत नहीं
CAPTCHA माँगता है कि कोई बॉट काम नहीं कर रहा, इसका प्रमाण मिले—चित्र पहेलियों से पृष्ठभूमि में चलने वाली जाँच तक; सामान्य सेवाएँ reCAPTCHA, hCaptcha, Cloudflare Turnstile और Friendly Captcha हैं। यह अधिकांश सामान्य स्वचालन रोकता है, इसलिए लोकप्रिय है। लेकिन हर दिखाई देने वाली पहेली बाधा है जहाँ कुछ आगंतुक हार मानते हैं और अधिकांश सेवाएँ तीसरे पक्ष की स्क्रिप्ट लोड करती हैं, जिससे गोपनीयता और सहमति के प्रश्न उठते हैं। CAPTCHA सही सेट होने पर ही मदद करता है: सार्वजनिक परीक्षण साइट कुंजी, स्क्रिप्ट के बिना विजेट या सर्वर द्वारा कभी न जाँचा गया टोकन सुरक्षा जैसा दिखता है, सुरक्षा नहीं है। formexposed.com की निःशुल्क जाँच बाहर से ऐसी गलतियाँ दिखाती है।
सुगम्यता भी इस लागत का हिस्सा है। चित्र पहेलियाँ अंधे और कम दृष्टि वाले कई लोगों को बाहर करती हैं, ऑडियो विकल्प बधिर-अंध व्यक्तियों की मदद नहीं करते और कठिन तार्किक कार्य संज्ञानात्मक अक्षमता वाले लोगों पर बोझ डालते हैं। WCAG 2.2 का सफलता मानदंड 1.1.1 CAPTCHA का उद्देश्य बताने वाला पाठ विकल्प और अलग इंद्रियों के लिए वैकल्पिक रूप माँगता है। पृष्ठभूमि की जाँच अधिकांश समस्या टालती है, लेकिन संदेह होने पर विकल्प अक्सर फिर चित्र पहेली होता है—उस रास्ते को कीबोर्ड और स्क्रीन रीडर से जाँचें।
CSRF टोकन: जालसाज़ी से सुरक्षा, स्पैम से नहीं
CSRF टोकन यादृच्छिक मान है जिसे सर्वर फ़ॉर्म में डालकर वापस पाने की अपेक्षा करता है। यह क्रॉस-साइट अनुरोध जालसाज़ी के विरुद्ध बना था, जहाँ दूसरी वेबसाइट आगंतुक के ब्राउज़र से अनचाहा अनुरोध भेजवाती है। सार्वजनिक संपर्क फ़ॉर्म पर इसका अतिरिक्त प्रभाव है: पृष्ठ लोड किए बिना सीधे फ़ॉर्म पते पर पोस्ट करने वाले बॉट अस्वीकार होते हैं। पृष्ठ लेकर टोकन वापस भेजने वाला हर बॉट निकल जाता है। अधिकांश फ़्रेमवर्क और फ़ॉर्म प्लगइन में वैसे भी CSRF टोकन होते हैं—चालू रखें, लेकिन स्पैम सुरक्षा न मानें।
सर्वर पर क्या होना चाहिए
- हर फ़ील्ड सर्वर पर फिर जाँचें: अनिवार्य फ़ील्ड, लंबाई, ईमेल प्रारूप और मेल हेडर में जाने वाले फ़ील्ड में पंक्ति विराम न होना।
- हर सबमिशन पर CAPTCHA और प्रूफ़ ऑफ़ वर्क टोकन जारी करने वाली सेवा या अपने कोड से जाँचें और दोबारा इस्तेमाल टोकन अस्वीकार करें।
- प्रति IP पता और समय अवधि में सबमिशन सीमित करें। यह एक स्रोत का प्रवाह रोकता है; कई पतों में फैले स्पैम के लिए अन्य परतें चाहिए।
- प्रूफ़ ऑफ़ वर्क पर विचार करें: भेजने से पहले ब्राउज़र छोटा गणनात्मक कार्य हल करता है। आगंतुक को पहेली नहीं दिखती और कुछ ट्रैक नहीं होता, लेकिन बड़े पैमाने पर सबमिशन महँगा होता है।
उपयोगी संयोजन: दो या तीन परतें
- 1अदृश्य परतों से शुरू करें: सुगम हनीपॉट और हस्ताक्षरित समय जाल, दोनों सर्वर पर जाँचे जाएँ।
- 2प्रति IP पता दर सीमा जोड़ें ताकि एक स्रोत फ़ॉर्म भर न दे।
- 3लक्षित स्पैम फिर भी आए, तो प्रूफ़ ऑफ़ वर्क या CAPTCHA जोड़ें—बेहतर होगा बिना दिखाई देने वाली पहेली और सुगम विकल्प वाला।
- 4फ़्रेमवर्क का CSRF टोकन बनाए रखें—अतिरिक्त लाभ के रूप में, मुख्य बचाव के रूप में नहीं।
- 5आगंतुक की तरह परिणाम जाँचें—केवल कीबोर्ड से, स्क्रीन रीडर से, फ़ोन पर—और देखें कि असली संदेश अब भी पहुँचते हैं।
कई साइटों पर हनीपॉट, समय जाल और दर सीमा मिलकर बिना दिखाई देने वाली बाधा के अधिकांश सामान्य स्पैम हटा देते हैं; पर्याप्त न होने पर CAPTCHA अतिरिक्त उपाय है। WordPress पर निःशुल्क formexposed प्लगइन Google के बिना हनीपॉट, समय जाँच और प्रूफ़ ऑफ़ वर्क जोड़ता है। बाहर से फ़ॉर्म क्या दिखाता है—कौन-सी परतें हैं, CAPTCHA प्रभावी ढंग से सेट है या नहीं—देखने के लिए formexposed.com की निःशुल्क जाँच को केवल डोमेन चाहिए, खाता नहीं। वह सर्वर कोड नहीं देख सकती, इसलिए सर्वर वाला भाग आपका काम रहता है।