SVG ile e-posta adresi koruma yöntemi, JavaScript yerine kullanım
(rouninmedia.github.io)-
SVG kullanarak e-posta adresi koruma tekniği
- Gerçek demo için SVG-based Email Protection bağlantısına bakın
- Web sayfasında açıkça görünen e-posta adresleri genellikle e-posta toplama botlarına karşı korunmalıdır
- Daha önce HTML, CSS ve JS kombinasyonunu kullanan teknikler tercih ediliyordu, ancak her birinin kendi artı ve eksileri var
- JS kullanan yöntemler, HTML/CSS tabanlı alternatiflere göre daha gelişmiş olsa da, JS'nin ilgili sayfanın zorunlu bir parçası haline gelmesi gibi bir dezavantajı vardır
- JS sayfayı iyileştirebilir, ancak ideal olan, JS kapalı olsa bile sayfanın tüm temel işlevlerinin çalışmasıdır
- Bu sayfada tanıtılan teknik, CSS, JS, CSS+JS gibi mevcut e-posta koruma tekniklerinden tamamen farklı, SVG tabanlı bir yaklaşım kullanıyor
-
SVG tabanlı e-posta adresi koruma tekniğinin 3 avantajı
- JavaScript kapalıyken de çalışır
- SVG tabanlı yaklaşımın temel avantajı, hiç JS gerektirmemesidir
- Ziyaretçi JS'yi kapatsa bile sayfada gösterilen e-posta adresi kullanılabilir ve erişilebilir olur; korunur, güvenli kalır ve spam botlarından gizlenir
- Standart
mailto:bağlantısı kullanılabilir- JS gerektirmeyen diğer yöntemlerin (HTML yorum ekleme, öğe gizleme vb.) aksine, SVG tabanlı yöntem standart
mailto:bağlantısının kullanımına izin verir - Ancak
mailto:bağlantısı, başvurduğu HTML belgesinin içinde değil, harici SVG belgesinin içinde yer alır
- JS gerektirmeyen diğer yöntemlerin (HTML yorum ekleme, öğe gizleme vb.) aksine, SVG tabanlı yöntem standart
- İçeriği görsel gibi gizlerken metin gibi kopyalanabilir
- Gömülü SVG, görsele benzer ama bir görsel değildir
- Hiper metin belgesine gömülü bir yedek öğe olarak SVG, e-posta adresini spam botlarından gizlemede bir görsel kadar etkili olabilir
- Ancak SVG, teknik olarak gerçek bir görsel değil, bir grafik belgesidir
- Bu yüzden görsellerden farklı olarak, gömülü SVG içindeki `` öğesi sağ tıklanarak e-posta adresi kopyalanabilir
- JavaScript kapalıyken de çalışır
-
Kod uygulaması
- Örnek 2 dosyadan oluşur
- SVG grafik belgesi, HTML hiper metin belgesine `` etiketi kullanılarak gömülür
- Aynı SVG grafik belgesi, hiper metne bir kez ya da birden fazla kez gömülebilir
- HTML dosyası ve SVG dosyası için kod örnekleri yer alır
-
Erişilebilirlik açısından dikkat edilmesi gerekenler
- Bu kurulumun mümkün olduğunca erişilebilir kalmasını sağlamak önemlidir
- Bunun için SVG grafik belgesinde şu noktalara dikkat edilir:
- Tüm SVG belgesi, eylem çağrısını belirtmek için SVG belge `` öğesi tarafından
aria-labelledbyile ilişkilendirilir - SVG içindeki bağlantı öğesi ``, aynı eylem çağrısını yapan bir
aria-labeliçerir - SVG, bağlantı öğesi
sekme odağı aldığında, alt öğeleri olanve `` öğelerinin birlikte vurgulanacağı şekilde stillendirilir
- Tüm SVG belgesi, eylem çağrısını belirtmek için SVG belge `` öğesi tarafından
GN⁺ görüşü
- HTML belgesine SVG gömerek, JS bağımlılığı olmadan e-posta adreslerini spam botlarından gizleyen özgün bir yaklaşım. Erişilebilirlik ve kullanılabilirliği birlikte düşünmesi açısından ilginç bir teknik gibi görünüyor.
- Ancak ön yüz tarafında ne kadar gelişmiş teknikler kullanılırsa kullanılsın, en gelişmiş spam botlarını tamamen engellemenin mümkün olmadığını unutmamak gerekir. Bu, her güvenlik çözümünün ortak sınırlarından biridir.
- Bu tekniğin gerçek projelerde kullanılabilmesi için SEO etkisi, farklı tarayıcı/cihaz uyumluluğu ve performans gibi konularda ek doğrulama gerekebilir.
- E-posta koruması için arka uç çözümleri olarak reCAPTCHA ve honeypot tekniği gibi yöntemler de birlikte değerlendirilebilir.
- CSS ve SVG'nin gelişmiş özelliklerinden yararlanan ilginç bir yöntem olsa da, gerçek kullanımda hâlâ bazı kısıtları var gibi görünüyor. Yine de front-end geliştiriciler için en az bir kez denenmeye değer eğlenceli bir fikir.
1 yorum
Hacker News görüşü
Özetle, bir web sayfasında açıkça görünen e-posta adreslerini spam botlarından korumanın gerekip gerekmediğine dair görüşler şöyle:
Purelymailsayesinde büyük bir sorun olmuyor<object>etiketi render edilmediği için bu teknik çalışmıyor1920x1080@60Hzifadesinin[email protected]olarak görünmesi gibi bir sorun var