javascript 电子邮件混淆到底有多安全?

问题描述 投票:0回答:8

为了将电子邮件地址放在我的网站上,我使用这个 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
8个回答
14
投票

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

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

如果你真的想阻止收割者,目前可用的最好的威慑措施可能是使用验证码来检索地址,例如Mailhide。然而,如果收割者有足够的决心(通过诸如有意或无意地众包验证码破解等方法),即使这种情况也可能被挫败。


1
投票

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

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


1
投票

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

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


1
投票

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

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


1
投票

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

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



0
投票
如果你像我一样并且不介意使用 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>

相当好的混淆。


0
投票
这通常与安全无关,而是为了降低被爬行互联网的典型机器人发送垃圾邮件的机会。您可以同时使用多种方法,使其效果更好。

    电子邮件混淆,就像你提到的,我使用
  • spamspan 并发现它很有效。
  • 您可以与任何您想要的提供商创建第二个收件箱,并使用转发所有规则将其显示在您的网站上,或者只有 2 个收件箱,您可以忽略可能的垃圾邮件,但回答严重的邮件。
  • 安装一些垃圾邮件过滤器来检测某些关键字。
无论如何,如果对方确实想要您的电子邮件,他们最终会找到它,但采取这些步骤通常是非常安全的。

© www.soinside.com 2019 - 2024. All rights reserved.