javascript电子邮件混淆究竟有多安全?

javascript电子邮件混淆究竟有多安全?,javascript,html,obfuscation,spam-prevention,email-spam,Javascript,Html,Obfuscation,Spam Prevention,Email Spam,为了在我的站点上放置电子邮件地址,我使用了以下Javascript: function showEmailLink(user, domain, linkText) { if (linkText == "") { linkText = user + "@" + domain; } return document.write("<a href=" + "mail" + "to:" + user + "@" + domain + ">" + linkText + "<

为了在我的站点上放置电子邮件地址,我使用了以下Javascript

function showEmailLink(user, domain, linkText) {
 if (linkText == "") {
  linkText = user + "@" + domain;
 }
 return document.write("<a href=" + "mail" + "to:" + user + "@" + domain
   + ">" + linkText + "<\/a>");
}
函数showEmailLink(用户、域、链接文本){
如果(linkText==“”){
linkText=用户+“@”+域;
}
返回文档。写入(“+linkText+”);
}
因此,我可以在我的HTML中编写以下内容:

please send me an 
<script type="text/javascript">
  <!--
  showEmailLink("edward","tanguay.info","e-mail");
  //-->
</script>
请给我发封电子邮件
这可以保护我的网站不受垃圾邮件发送者的攻击,他们通过截屏源代码收集电子邮件地址,因为我的电子邮件在文本中的无位置

然而,我无法想象,一个有动机的垃圾邮件发送者不会以某种方式编写一个screenscaper,它可以机械地根据javascript和HTML代码确定电子邮件地址


这种javascript电子邮件混淆方法真的有多安全?

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

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


如果你真的想威慑收割机,可能目前可用的最好的威慑手段是使用CAPTCHA来检索地址,比如。然而,如果收割机有足够的决心(通过有意或甚至无意的众包验证码破解等方法),即使这一点也可能被挫败。

如果有人想专门针对您的站点,这是0%安全的。如果您只是想提高对自动脚本的标准,那么您可能会很好。我没有跟上最新的技术水平

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

如果您要这样做(原则上我不同意,因为我认为所有内容都应该可以在没有JavaScript的情况下被用户访问),那么诀窍就是做一些独特的事情。如果你的方法是独一无二的,那么scraper的作者编写解决方案就没有什么意义了,是吗


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

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


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

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


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

如果你和我一样,不介意使用javascript,我发现这个页面: 它基本上使用了以下代码段:

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

函数mailMe(sDom、sUser)
{
返回(“邮件”+”至:“+sUser+”@”+sDom.replace(/%23/g,”)”);
}

很好的混淆。

马特·卡茨(matt cutts)在网站管理员视频中提到,这种技术不再“安全”看到这里的链接,他说,如果你把JavaScript放在robots.txt不允许的地方,那么你就不必担心机器人会渲染html,但是谷歌在解析JavaScript方面做得越来越好,如果你使用这种方法,你的地址可能会以明文搜索

安全漏洞是什么?我想我遗漏了一些东西,但我能看到的唯一效果是用户可以在本地计算机上修改HTML。reCAPTCHA(和Mailhide,由他们完成)的一个优点是,它也提供了非Javascript版本。它的采用率让它变得很糟糕。如果您找到了,收割机也会找到。:)