सामग्री पर जाएँ
ब्लॉग पर वापस जाएँ

ब्लॉग

कॉन्टैक्ट फ़ॉर्म स्पैम: हनीपॉट, रेट लिमिट और Turnstile

· 4 मिनट का पठन

एक फ़ॉर्म पब्लिश करें, कुछ दिन इंतज़ार करें, और बॉट्स उसे ढूंढ लेते हैं। यह समझना कि वे कैसे काम करते हैं, बचाव के उपायों को स्पष्ट बना देता है - और यह भी समझाता है कि सही जवाब परतें हैं, कोई एक भारी-भरकम CAPTCHA नहीं।

अपने दुश्मन को जानें: तीन तरह का फ़ॉर्म स्पैम

  1. बेवकूफ़ क्रॉलर - ऐसे स्क्रिप्ट जो वेब पर हर <form> ढूंढते हैं और action URL पर POST दागते हैं। ये जो भी फ़ील्ड दिखती है उसे भर देते हैं। यही ज़्यादातर वॉल्यूम है।
  2. लक्षित हमले - कोई व्यक्ति (या किसी का बॉटनेट) सीधे आपके ख़ास एंडपॉइंट पर हमला करता रहता है, अक्सर सिर्फ़ इसलिए क्योंकि वह मौजूद है।
  3. इंसानी स्पैम फ़ार्म - असली लोग जिन्हें फ़ॉर्म भरने के लिए पैसे दिए जाते हैं। कॉन्टैक्ट फ़ॉर्म के लिए दुर्लभ; कोई भी ऑटोमेटेड बचाव इन्हें पूरी तरह नहीं रोकता, और यह ठीक है - ये एक मामूली सी त्रुटि भर हैं।

नीचे दी गई हर परत इनमें से किसी एक से मेल खाती है।

परत 1: हनीपॉट (क्रॉलर को रोकता है)

हनीपॉट एक अतिरिक्त इनपुट है जिसे इंसान कभी नहीं देखते - CSS से छिपा हुआ - लेकिन बेवकूफ़ बॉट्स इसे ईमानदारी से भर देते हैं क्योंकि यह मार्कअप में मौजूद है:

<input type="text" name="website" tabindex="-1" autocomplete="off"
       style="position:absolute;left:-9999px" aria-hidden="true">

सर्वर-साइड नियम: अगर वह फ़ील्ड ख़ाली नहीं आती, तो सबमिशन स्पैम है। इसे चुपचाप स्वीकार करें (200 लौटाएँ) और छोड़ दें, ताकि बॉट कुछ न सीख सके। यह एक तरकीब इंसानों के लिए शून्य रुकावट के साथ ज़्यादातर स्पैम ख़त्म कर देती है - कोई पहेली नहीं, कोई क्लिक नहीं, कुछ नहीं।

ज़रूरी बारीकियाँ: इसे एक लुभावना नाम दें (website, phone2), इसे टैब क्रम से बाहर रखें, और इसे aria-hidden से चिह्नित करें ताकि स्क्रीन रीडर इसे छोड़ दें - यह एक्सेसिबिलिटी के लिहाज़ से भी अदृश्य होना चाहिए, सिर्फ़ नज़र से छिपा होना काफ़ी नहीं।

परत 2: रेट लिमिटिंग (हमलों को रोकती है)

जब कोई बॉट एक मिनट में 500 बार वैध दिखने वाला डेटा POST करता है, तो हनीपॉट काम नहीं आता। प्रति-IP और प्रति-फ़ॉर्म रेट लिमिट यह काम करती हैं: कोई असली इंसान साठ सेकंड में दस बार कॉन्टैक्ट फ़ॉर्म सबमिट नहीं करता, इसलिए थ्रॉटलिंग से कुछ भी क़ीमती नहीं खोता। ये लिमिट प्राप्त करने वाले एंडपॉइंट पर, स्टोरेज और नोटिफ़िकेशन से पहले लागू होनी चाहिए - वरना हमला फ़्लैग होने पर भी आपका इनबॉक्स भर देता है।

परत 3: Turnstile (जब दबाव को चुनौती की ज़रूरत हो)

जब कोई फ़ॉर्म ज़्यादा स्मार्ट बॉट्स को आकर्षित करता है — हेडलेस ब्राउज़र जो CSS रेंडर कर लेते हैं और आपके हनीपॉट को नज़रअंदाज़ कर देते हैं — तो आप एक चुनौती की ओर बढ़ते हैं। Cloudflare Turnstile आधुनिक विकल्प है: यह ब्राउज़र सिग्नल्स के ज़रिए इंसानियत सत्यापित करता है और आमतौर पर बिना दिखे हल हो जाता है, फ़ायर-हाइड्रेंट वाली फ़ोटो क्विज़ के बिना। प्रक्रिया मानक है: आपके पेज पर एक विजेट एक टोकन बनाता है, प्राप्त करने वाला सर्वर उस टोकन को Cloudflare से सत्यापित करता है, और बिना वैध टोकन वाली सबमिशन अस्वीकार कर दी जाती हैं।

Turnstile वह परत है जिसे ज़रूरत पड़ने पर जोड़ना चाहिए, पहले से नहीं — हर चुनौती, चाहे कितनी भी हल्की हो, कुछ न कुछ कन्वर्ज़न की क़ीमत चुकाती है।

जब यह किसी और का काम हो तो यह कैसा दिखता है

अगर आप अपना ख़ुद का फ़ॉर्म रिसीवर चलाते हैं, तो आप तीनों परतें लागू कर रहे हैं — साथ ही उन्हें हमेशा के लिए चालू रखने का काम भी। यही एक बड़ी वजह है कि फ़ॉर्म बैकएंड किस लिए होता है। Formhook हर टियर में, फ़्री सहित, डिफ़ॉल्ट रूप से हनीपॉट, प्रति-IP और प्रति-फ़ॉर्म रेट लिमिट, और प्रति-फ़ॉर्म CORS allowlist देता है; जब आपको अतिरिक्त परत चाहिए तो Turnstile फ़ॉर्म सेटिंग्स में बस एक चेकबॉक्स है।

आप जो भी रास्ता चुनें, रणनीति वही रहती है: पहले अदृश्य बचाव, आख़िर में इंसान के सामने आने वाली चुनौतियाँ, और शुरुआती क़दम के तौर पर कभी CAPTCHA नहीं।

एक ही लाइन में काम करने वाला फ़ॉर्म

EU-होस्टेड, सबमिशन हमेशा के लिए सुरक्षित, हर टियर पर पुश सूचनाएँ।

मुफ़्त में शुरू करें

क्रेडिट कार्ड नहीं चाहिए · दस्तावेज़ पढ़ें

आगे पढ़ें