Toon posts:

Foutieve/encoded href in e-mail-link frontpage

Pagina: 1
Acties:
  • 191 views

  • HyperioN
  • Registratie: April 2003
  • Laatst online: 27-01 12:32
In het artikel plan: Tweakers stapt over op YouTube - Win een oled-tv ter waarde van 1999 euro!
staat een mailto-link naar het e-mailadres prijsvraag@tweakers.net.
De href-tag van die link is echter foutief/vreemd opgebouwd:
HTML:
1
<a rel="mail" data-to=" prijsvraag" data-domain="%74%77%65%61%6B%65%72%73.%6E%65%74" href="mailto: prijsvraag@%74%77%65%61%6B%65%72%73.%6E%65%74">prijsvraag@tweakers.net</a>

Allereerst staat er een spatie na mailto: wat volgens mij niet hoort.
Daarnaast is de tld tweakers.net url-encoded; als ik de string %74%77%65%61%6B%65%72%73.%6E%65%74 door php's urldecode haal komt daar inderdaad tweakers.net uit.

Als ik in Chrome via context menu "Copy e-mail address" kies en vervolgens plak in Gmail, komt het er ook zo uit:
https://tweakers.net/ext/f/1qxoVeYQbxtG67HK9Va9cW7D/full.png

Dus dat gaat niet helemaal lekker.

  • koku
  • Registratie: Mei 2009
  • Laatst online: 16:35

koku

Tnet Devver
De mail-adressen worden automatisch obfuscated ivm crawlers/spam. Er stond nog wel een overbodige spatie achter "mailto:" en die heb ik even weggehaald.

  • HyperioN
  • Registratie: April 2003
  • Laatst online: 27-01 12:32
Valide reden, maar daarmee breek je dus wel de "Copy e-mail address" functionaliteit van sommige browsers.

Heb het even getest.
"Copy e-mail address" werkt nu niet goed in Safari 12.0 op macOS 10.14 en Chrome 69 op zowel macOS 10.14 als Windows 10. Deze browsers passen dus géén urldecode toe op de value als je "Copy e-mail address" doet.
In Firefox 62 werkt het wel naar behoren; dus deze browser voert een urldecode uit alvorens de value naar het clipboard te schrijven.
Internet Explorer en Edge hebben geen "Copy e-mail address" functionaliteit.


De vraag is dus of de beoogde spampreventie opweegt tegen de UX-degradatie die je ermee veroorzaakt.

Ik zie nu trouwens dat het href-attribuut in de source niet eens aanwezig is:
HTML:
1
<a rel="mail" data-to="prijsvraag" data-domain="%74%77%65%61%6B%65%72%73.%6E%65%74" rel="external">prijsvraag@tweakers.net</a>

Ik vermoed dus jullie de hrefs setten met Javascript - vermoedelijk om bots uit te sluiten die geen Javascript uitvoeren.
Als je dat toch al doet, dan zou je dus ook direct decodeURIComponent kunnen uitvoeren op de domeinnaam, zodat het un-obfuscated mailadres in de href-tag gezet wordt.

Zoiets:
HTML:
1
2
3
4
5
6
7
8
9
10
<p>
  hoi tralala <a rel="mail" data-to="prijsvraag" data-domain="%74%77%65%61%6B%65%72%73.%6E%65%74" rel="external">prijsvraag@tweakers.net</a>
</p>

<script type="text/javascript">
var mailLinks = document.querySelectorAll('a[rel="mail"]');
mailLinks.forEach(function(elem){
  elem.href = 'mailto:'+ elem.dataset.to + '@' + decodeURIComponent(elem.dataset.domain);
});
</script>



offtopic:
Overigens vermoed ik dat de meeste spambots niet alleen zoeken naar mailto:-hrefs maar ook met een reguliere expressie strings zoeken in je source die lijken op een emailadres. In dat geval bereik je met enkel obfuscation van het adres in de mailto vrij weinig.

[Voor 0% gewijzigd door HyperioN op 26-09-2018 16:21. Reden: typo]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 23:55

crisp

Devver

Pixelated

Ik heb er decoding aan toegevoegd; komt vanmiddag online :)

Intentionally left blank



Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee