隐藏电子邮件地址的 HTML 实体

信息安全 电子邮件 垃圾邮件 html WordPress 编码
2021-08-12 04:57:00

我在 WordPress 上试图阻止垃圾邮件机器人抓取可能在内容中的电子邮件地址。WordPress 有一个漂亮的小函数,简称为antispambot()它将电子邮件地址转换为 HTML 实体。

no-reply@domain.com 转换为:

no-reply@domain.com

这个功能已经存在了很长时间,我确信这个方法已经存在了很长时间,所以我的问题是:这仍然是击败垃圾邮件机器人的有效方法吗?这种方法仍然会欺骗垃圾邮件机器人并保证电子邮件安全吗?

4个回答

不,这不会愚弄垃圾邮件机器人。我见过几个使用 html5lib 或可比较的工具解析整个 DOM 的垃圾邮件机器人。当然,许多垃圾邮件发送者只是“猜测”电子邮件地址:当您有僵尸网络时,发送电子邮件的成本基本上是 0,因此将用户名和域组合起来猜测效果很好。

我见过的稍微好一点的技术涉及使用 javascript 在运行时将电子邮件地址呈现到 DOM 中。垃圾邮件机器人需要在浏览器中运行或使用 WebDriver 之类的东西来解决这些问题。

但是,实际上,隐藏您的电子邮件地址是一场失败的战斗。联系人的通讯录可能已被盗用,或者您可能会错过发布该联系人的某个位置,然后您又回到了开始的位置。良好的过滤可能是更好的时间和精力投资。

保持电子邮件“安全”几乎是不可能的。特别是,广泛部署的恶意软件会检查受感染系统的地址簿,以便:

  1. 收集电子邮件以发送垃圾邮件;
  2. 把自己送到这些人身边,以传播感染。

要看到您的电子邮件成为垃圾邮件列表的一部分,与您交换电子邮件的人之一在他的系统上获得一些恶意软件(您无法控制)就足够了。一旦您的电子邮件被泄露,战争就失败了,因为垃圾邮件发送者永远不会忘记 (*)。永远不会在您的电子邮件中收到任何垃圾邮件的唯一现实方法是根本没有电子邮件(这就是Donald Knuth所做的)。

然而,尽管这种防止电子邮件收集的技术实际上是无效的,但有些人可能会觉得打电话是您的责任antispambot()从这个意义上说,您应该继续使用该功能;不是因为它有效(它没有),而是因为它安抚了(一些)用户。

(*) 我曾经销毁了一个电子邮件地址,因为在我完全停止使用它五年后,它仍然每天收到数十封垃圾邮件。在收到超过 20000 封垃圾邮件而不是一封非垃圾邮件之后,我决定是时候结束它的痛苦了。

使用 JavaScript 保护电子邮件地址似乎是一种有效的方法。很长一段时间以来,我在一些网页上都有电子邮件地址,但从未收到过垃圾邮件。至少对于您必须在主页上共享的电子邮件地址来说,这会给它们的所有者带来一点安宁。

电子邮件地址是倒写的,JavaScript 正在反转它们。垃圾邮件机器人似乎并不关心,只要涉及到像 for 循环这样可能很昂贵的东西。当然,这在未来可能会改变。

任何有效的网络爬虫实际上必须对 HTML 实体进行解码,因为像“<”或“>”这样的字符(也可以出现在电子邮件地址中)在作为数据出现时总是被编码。所以实体的解码甚至不是一个特殊的“攻击特征”。这是一个自然的功能。

您唯一的希望是垃圾邮件机器人的作者不知何故不理解 HTML 或需要将文本处理减少到绝对最低限度。但这是非常薄的冰。