代码之家  ›  专栏  ›  技术社区  ›  Edward Tanguay

javascript电子邮件混淆的安全性如何?

  •  7
  • Edward Tanguay  · 技术社区  · 16 年前

    为了在我的网站上放置电子邮件地址,我使用这个 JavaScript :

    function showEmailLink(user, domain, linkText) {
     if (linkText == "") {
      linkText = user + "@" + domain;
     }
     return document.write("<a href=" + "mail" + "to:" + user + "@" + domain
       + ">" + linkText + "<\/a>");
    }
    

    所以在我的 HTML 我可以写这个:

    please send me an 
    <script type="text/javascript">
      <!--
      showEmailLink("edward","tanguay.info","e-mail");
      //-->
    </script>
    

    这将保护我的网站不受垃圾邮件发送者收集电子邮件地址的 刮板 因为我的电子邮件是 无处 在正文中。

    然而,我无法想象,一个有动机的垃圾邮件发送者不知何故不能写一个可以 机械地 根据此javascript和HTML代码确定电子邮件地址。

    这种JavaScript电子邮件废弃方法有多安全?

    7 回复  |  直到 11 年前
        1
  •  14
  •   Amber    11 年前

    这并不是一个真正的“安全”问题——普通用户可以看到的任何东西都不是“安全”的,因为任何真正确定的恶意实体都可以像普通用户一样,实际呈现/评估页面。

    这更像是一个威慑的问题——自动收割机要多少钱? 照顾 ?我没有确切的数字,但我的猜测是大多数收割机不会费心完全渲染或评估页面,因为它们有很多“软”的目标,而且完全评估一个页面的脚本需要更长的时间,这不适合快速的大规模蜘蛛。

    如果你真的想威慑收割机,也许目前最好的威慑手段是使用验证码来检索地址,比如 Mailhide . 然而,如果收割机足够确定,即使这样也可能被挫败(通过诸如有意或甚至不知情的众包Captcha Breaking等方法)。

        2
  •  1
  •   i_am_jorf    16 年前

    如果有人想针对你的网站,这是0%的安全。如果你只是想提高对自动化脚本的限制,你可能会没事的。我跟不上最先进的技术。

    不过,我想指出的是,您不应该通过document.write()将任意字符串(如用户名和域名)注入HTML,因为这是一个安全漏洞。您应该创建一个节点并使用getter/setter方法。

        3
  •  1
  •   c_harm    16 年前

    如果你要这样做(原则上我不同意,因为我相信 全部的 不使用javascript的用户应该可以访问内容),诀窍是做一些独特的事情。如果你的方法是独特的,那么对于scrapers的作者来说,编写一个解决方案的代码是没有多大意义的,对吧?

    然而,一些现代的scraper已经知道使用呈现的源代码来抓取地址,使得任何javascript模糊方法都变得一文不值。

        4
  •  1
  •   nfm    16 年前

    这完全取决于呈现页面的成本是否被电子邮件地址的值所抵消。正如Dav所说,专业的垃圾邮件发送者可以雇佣大量廉价劳动力来呈现这些页面,或者破译验证码。在某些情况下,这是非常值得的,例如在受信任的域中创建新的电子邮件帐户。

    您可以通过在showEmailLink()中执行一些计算来增加呈现页面的成本。

        5
  •  1
  •   Greg Hewgill    16 年前

    虽然我没有确凿的证据,但我相信电子邮件收割机已经有能力执行几年的javascript代码了。这是基于使用一个非常类似于你的功能来“保护”一个公共页面上的电子邮件地址,而这个公共页面并没有在其他地方使用。当然,最终他们开始收到垃圾邮件。

    从根本上说,任何你能做的事情都不需要人来解释和输入电子邮件地址, 最终会被电子邮件收割机刮伤。如果你的浏览器可以执行javascript来解码,他们也可以。(他们可能使用浏览器来完成这项工作。)

        6
  •  1
  •   Carter Cole    15 年前

    Matt Cutts在网站管理员视频中提到,这种技术不再“安全”,请看这里的链接。 http://www.youtube.com/watch?v=Ce6cLrrfS5E 他说,如果你把javascript放在robots.txt不允许的地方,那么你就不必担心呈现HTML的机器人了,但是google在解析javascript方面做得更好,如果你使用这种方法,你的地址可以以明文搜索。

        7
  •  0
  •   Rocky Luck    16 年前

    如果你和我一样,不介意使用javascript,我找到了这个页面: http://reliableanswers.com/js/mailme.asp 它基本上使用这个片段:

    <script type="text/javascript">
    function mailMe(sDom, sUser)
    {
      return("mail"+"to:"+sUser+"@"+sDom.replace(/%23/g,"."));
    }
    </script>
    <a href="/contact/" title="Contact Me!"
     onmouseover="javascript:this.href=mailMe('example%23com','me');"
     onfocus="javascript:this.href=mailMe('example%23com','me');">Contact
    Me!</a>
    

    相当模糊。

    推荐文章