SVG के ज़रिए ईमेल पते की सुरक्षा, JavaScript के बजाय उपयोग
(rouninmedia.github.io)- सार्वजनिक ईमेल पते को spambots द्वारा इकट्ठा किए जाने से छिपाते हुए भी विज़िटर तुरंत संपर्क कर सकें, इसके लिए SVG के अंदर ईमेल टेक्स्ट और
mailto:लिंक रखने का तरीका है - JavaScript-आधारित सुरक्षा ज़्यादा उन्नत हो सकती है, लेकिन संपर्क सुविधा का खुद JS dependency रखना एक बोझ बन जाता है
- इस approach में बाहरी SVG document को HTML के
से insert किया जाता है, और असली लिंक HTML में नहीं बल्कि SVG के अंदरelement में रखा जाता है - SVG image की तरह content को छिपाने का असर देता है, फिर भी `` element इस्तेमाल करने के कारण विज़िटर ईमेल पता copy कर सकते हैं
- यह उन्नत spambots तक को रोकने वाला समाधान नहीं है, लेकिन साधारण ईमेल harvesting scripts के सामने expose होने के जोखिम को कम करने में उपयोगी है
SVG से ईमेल पता छिपाने का तरीका
- सार्वजनिक ईमेल पते email-harvesting spambots के सामने आसानी से expose हो सकते हैं, इसलिए सुरक्षा उपाय की ज़रूरत होती है
- आम सुरक्षा तकनीकें HTML, CSS, JavaScript को मिलाती हैं, लेकिन JavaScript इस्तेमाल करने पर संपर्क सुविधा page के आवश्यक execution environment से बंध जाती है
- SVG तरीका JavaScript बिल्कुल इस्तेमाल किए बिना ईमेल display और link behavior संभालता है
- JavaScript बंद होने पर भी विज़िटर page पर दिखा ईमेल पता इस्तेमाल कर सकते हैं, और spambots के लिए यह सामान्य HTML text की तुलना में कम सीधे तौर पर expose होता है
- अन्य frontend-आधारित सुरक्षा तकनीकों की तरह, यह ज़िद्दी और उन्नत spambots से सार्वजनिक ईमेल पते की पूरी तरह रक्षा नहीं कर सकता
- लाइव डेमो: SVG-based Email Protection
HTML और SVG implementation
- HTML document बाहरी SVG file को `` से insert करता है
- उसी SVG graphic document को HTML के अंदर एक बार या कई बार insert किया जा सकता है
- उदाहरण HTML
.svg-email-protectionclass परwidth: 180px,height: 24px,vertical-align: middlestyles सेट करता है, और body में SVG file को `` से load करता है - SVG file
viewBox="0 0 200 24"वाला `` document है, जिसके अंदर ईमेल text औरmailto:myemail@mydomain.tldlink रखा जाता हैके अंदरऔर `` होते हैं- `` में
myemail@mydomain.tldदिखता है rect:hoverऔरa:focusstates में background color, text color, weight, underline, shadow styles बदलते हैं
Accessibility और संदर्भ सामग्री
- पूरा SVG document
की ओर इशारा करने वाला `aria-labelledby` इस्तेमाल करता है, और SVG के अंदरमें उसी call-to-action वालाaria-labelरखा जाता है - जब keyboard tab focus SVG के अंदर anchor तक पहुंचता है, तो
औरसाथ में highlight होकर focus state दिखाते हैं - संबंधित सामग्री:
1 टिप्पणियां
Hacker News की राय
सच में ऐसा है क्या?
लेकिन निजी तौर पर मुझे लगा कि लगभग 2015 के बाद से इसका कोई फ़र्क नहीं रहा, और फ़िल्टर करने लायक स्पैम भी नहीं बढ़ा
अब कंपनियाँ यूज़र लिस्ट बेच देती हैं या सर्वर हैक होकर निकली विशाल ईमेल सूचियाँ खरीदी जा सकती हैं, इसलिए वेब खंगालकर ईमेल इकट्ठा करना स्पैम भेजने के हिसाब से लगभग सबसे खराब दक्षता वाला तरीका है
दोनों साइटों पर हज़ारों विज़िटर आते हैं, और वे search engine व AI bots द्वारा scrape की जाने वाली लोकप्रिय साइटें हैं
वेबसाइट पर डाला गया ईमेल पता तो spam folder तक में नहीं पहुँचता
कुछ mailing lists शायद FIRSTNAME.LASTNAME फ़ॉर्मेट या 1~10 अक्षरों के कॉम्बिनेशन से Gmail पते dictionary attack की तरह अनुमान लगाकर बनाती हैं
फिर भी domain@domain.com पते पर आने वाला स्पैम साल में लगभग एक बार ही आता है, यानी बहुत कम
कुल मिलाकर ईमेल स्पैम की मात्रा भी काफ़ी घटी है, और अब जो स्पैम निकलता है वह 419 ठगों या 20 साल पुरानी ईमेल सूचियाँ खरीदने वाले ठगे जा चुके संभावित ठगों का मिश्रण लगता है
मैं इसे कोई गंभीर privacy या security समस्या नहीं कहूँगा, लेकिन यह मेरी पसंद का मामला है
मेरा domain एक 24 साल से registered .com है, और ईमेल पता पहले पेज के सबसे ऊपर H3 tag में खुला पड़ा है
इस पते पर आने वाला स्पैम कोई समस्या नहीं है। junk folder समेत दिन में लगभग 15 मेल आते हैं, और Purelymail की वजह से संभल जाता है
असली समस्या वे transactional mails हैं जिनका किसी लेन-देन से संबंध नहीं, newsletter जैसे promotional mails, और social networks जो यह बताने के लिए लगातार मेल भेजते रहते हैं कि आप उन्हें इस्तेमाल नहीं कर रहे
अकाउंट इस्तेमाल किए हुए लगभग 7 साल हो गए, अब तक तो उन्हें समझ जाना चाहिए
कुछ जगहों पर लगभग स्पैम नहीं आता, और कुछ पर दिन में कई दर्जन मेल आते हैं। SpamAssassin स्पैम पकड़ने में बहुत अच्छा काम करता है
“अगर विज़िटर JavaScript बंद कर दें तब भी पेज पर दिख रहा ईमेल पता इस्तेमाल किया जा सकता है” इस दावे के उलट, Firefox में NoScript की default setting tag render नहीं करती और उसे placeholder से बदल देती है, इसलिए यह तकनीक वहाँ काम नहीं करती
https://imgur.com/2tCAgAf
इस तकनीक में अपने-आप accessibility की कमी होना ज़रूरी नहीं, लेकिन लेख में दिया गया उदाहरण सचमुच बहुत खराब है
लेख svg और a element के label को “Email us!” रखता है, जिससे असली ईमेल पता screen reader से छिप जाता है
इस तरह aria label का इस्तेमाल बहुत खराब प्रैक्टिस है। जब तक कोई बहुत असाधारण कारण न हो, screen reader उपयोगकर्ताओं को भी दूसरों जैसा ही अनुभव मिलना चाहिए, और अगर आपको लगे कि ऐसा न करने का कारण काफ़ी मज़बूत है, तो संभव है कि आप ग़लत हों
सही तरीका यह है कि label में असली ईमेल पता रखा जाए
अगर उपयोगकर्ता “Click myemail@mydomain.tld” बोले, तो browser लिंक टेक्स्ट को “Email us” के रूप में expose करता है, इसलिए लिंक activate नहीं हो सकता
हालाँकि Dragon SVG के अंदर के लिंक activate कर सकता है या नहीं, यह मुझे नहीं पता
मैं यह करता हूँ: reanospaml@maisjsl.com
फिर भी “स्पैम” आता है, लेकिन वह वेबसाइट के विषय से बिल्कुल मेल खाते B2B proposals होते हैं, इसलिए लगता है कि किसी इंसान ने हाथ से इकट्ठा किया है
हालाँकि ईमेल harvesting के लिए headless browser चलाना तुलनात्मक रूप से महँगा पड़ता है, इसलिए हो सकता है वह स्पैम साइट से आया ही न हो
जैसा कि दूसरे लोग पहले ही कह चुके हैं, ईमेल को “protect” करना न सिर्फ़ बेकार है, बल्कि वास्तव में नुकसानदेह भी हो सकता है
JavaScript के बिना भी ज़्यादातर कंटेंट ठीक से पढ़ा जा सकता है, लेकिन कुछ साइटें “1920x1080@60Hz” जैसी strings को सचमुच “[email protected]” की तरह दिखाती हैं
समझ नहीं आता कि इसका सच में कोई मतलब है भी या नहीं। मज़ेदार प्रयोग ज़रूर है, लेकिन अगर मकसद spammers से बचना है, तो यह पूरी तरह समय की बर्बादी है
आप जानकारी पूरी दुनिया के सामने रखकर भी somehow यह उम्मीद कर रहे हैं कि सिर्फ़ “अच्छे लोग” ही उस तक पहुँच पाएँ
जब तक आप ईमेल पता कम-से-कम हर महीने नहीं बदलते, कोई न कोई आपका संपर्क किसी और को दे देगा, database/CRM में डाल देगा, या कोई service breach हो जाएगी; और फिर वह पता किसी सूची में चढ़कर अंततः दुनिया भर के spammers तक पहुँच जाएगा
अगर आप वह ईमेल लगातार इस्तेमाल करते हैं, तो ऐसा होने की संभावना व्यवहारिक रूप से 100% के क़रीब है
अगर scrapers से ईमेल छिपाना सचमुच असरदार होता, तो स्पैम नाम की चीज़ होती ही नहीं। मैंने अपना निजी संपर्क कहीं सार्वजनिक नहीं किया, फिर भी हफ़्ते में कई दर्जन स्पैम आते हैं, हालाँकि सब फ़िल्टर हो जाते हैं इसलिए कोई बड़ी दिक्कत नहीं
मेरा एक दोस्त सचमुच उस्ताद है, और वह JavaScript वाले SVG से लगभग responsive images बना रहा है
वे साइज़ के हिसाब से प्रोग्रामेटिक तरीके से adapt करती हैं, जो काफ़ी दिलचस्प है
SVG के अंदर JavaScript डाला जा सकता है, यही बात अभी भी कम इस्तेमाल की हुई और थोड़ी जोखिमभरी लगती है
मैं backend engineer हूँ, इसलिए तकनीकी रूप से यह मेरे क्षेत्र से काफ़ी बाहर है, लेकिन यह सच में शानदार लग रहा है
मैंने ऐसे तरीक़े छोड़ दिए हैं। आजकल spam filters काफ़ी अच्छे हैं, इसलिए ईमेल पता बिना obfuscation के सार्वजनिक करने पर भी स्पैम बढ़ता नहीं दिखता
अलग बात यह है कि कुछ घटिया कंपनियाँ, जिनके पास वैध कारणों से मेरा ईमेल है, उसे third parties को बेच देती हैं
आम तौर पर inbox में आने वाला स्पैम दिन में 1 मेल से भी कम होता है, और वह मेरे लिए स्वीकार्य है
बेशक यह ईमेल provider और spam filter पर निर्भर कर सकता है, इसलिए लोगों का अनुभव अलग होगा, लेकिन मेरे लिए यह समस्या नहीं रही
ईमेल अब भी page source में referenced XML document के अंदर plain text के रूप में मौजूद है
document.querySelectorAll('a')जैसे तरीक़े से देखने पर फ़र्क पड़ता है। कई scraping techniques यही तरीका अपनाती हैं, इसलिए पहली रक्षा पंक्ति के रूप में यह ठीक हैहालाँकि scraping के लिए headless browser मौजूद हैं, और पेज पर current URL को वैसे का वैसा
fetchकरके plain text लिया जा सकता है और regex से ईमेल खोजा जा सकता है। मानता हूँ, यह काफ़ी अजीब तरीका है[0]: fetch('./').then((res) => res.text()).then((text) => console.log(text))
लेकिन आधुनिक spam-protection माहौल में यह वास्तव में कितना असरदार है, कहना मुश्किल है