【问题标题】:How safe is javascript e-mail obfuscation really?javascript 电子邮件混淆器到底有多安全?
【发布时间】:2010-11-26 02:22:13
【问题描述】:

为了将电子邮件地址放在我的网站上,我使用了这个 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 电子邮件混淆方法真的安全吗?

【问题讨论】:

    标签: javascript html obfuscation spam-prevention email-spam


    【解决方案1】:

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

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

    如果您真的想阻止收割者,目前可用的最佳威慑可能是涉及到 CAPTCHA 来检索地址,例如Mailhide。但是,如果收割者足够确定(通过诸如故意或什至在不知情的情况下众包 CAPTCHA 破解等方法),即使这也可以被挫败。

    【讨论】:

      【解决方案2】:

      如果有人想专门定位您的网站,这是 0% 安全的。如果您只是想提高针对自动化脚本的标准,那么您可能会没事。我没有跟上最先进的技术。

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

      【讨论】:

      • 安全漏洞是什么?我想我遗漏了一些东西,但我能看到的唯一效果是用户可以在本地计算机上修改 HTML。
      【解决方案3】:

      如果您要这样做(我原则上不同意这一点,因为我认为 所有 内容应该可供没有 JavaScript 的用户访问),诀窍就是做一些独特的事情。如果您的方法是独一无二的,那么爬虫的作者编写解决方法就没有多大意义了,嗯?

      然而,众所周知,一些现代抓取工具会使用渲染的源代码来抓取地址,从而使任何 JavaScript 混淆方法变得毫无价值。

      【讨论】:

      • reCAPTCHA(和 Mailhide,由他们完成)的一个优点是它也提供了非 JavaScript 版本。
      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

        虽然我没有任何确凿的证据,但我相信电子邮件收割者已经有能力执行 javascript 代码多年了。这仅基于使用与您的功能非常相似的功能来“保护”公共页面上未在其他任何地方使用的电子邮件地址。果然,最终他们开始收到垃圾邮件。

        从根本上说,您可以做的任何事情都不需要人工解释和输入电子邮件地址,最终会被电子邮件收割机抓取。如果您的浏览器可以执行 javascript 来解码它,那么它们也可以。 (他们可能使用浏览器来做到这一点。)

        【讨论】:

          【解决方案6】:

          matt cutts 刚刚在网站管理员视频中提到,这种技术不再“安全”,请参阅此处的链接 http://www.youtube.com/watch?v=Ce6cLrrfS5E 他说,如果您将 JavaScript 放入 robots.txt 不允许的地方,那么您不必担心渲染 html 的机器人,但 Google 在解析 JavaScript 方面做得越来越好,如果您使用此方法,您的地址可能会以明文形式搜索

          【讨论】:

            【解决方案7】:

            如果你和我一样不介意使用 javascript,我发现了这个页面: http://reliableanswers.com/js/mailme.asp 它基本上使用这个sn-p:

            <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>
            

            很好的混淆。

            【讨论】:

            • 它的采用率让它变得很糟糕。如果你找到了,收割机也会。 :)
            猜你喜欢
            • 1970-01-01
            • 2011-03-26
            • 2013-11-05
            • 1970-01-01
            • 2013-05-25
            • 2013-04-20
            • 2012-08-22
            • 2013-01-07
            • 1970-01-01
            相关资源
            最近更新 更多