电子邮件混淆问题

5

是的,我知道这个问题已经有人问过并得到了回答,但我对此有一些特定的问题感觉在那个帖子上没有得到清楚的解答,而且我也不想在其他帖子中被忽略。

以前的讨论说,像Facebook那样将电子邮件地址渲染为图像是过度和不专业的用户体验,适用于商务/专业网站。似乎普遍的共识是使用JavaScript document.write方案,使用html实体或其他方法来打破和/或使字符串变得无法被简单机器人阅读。我正在构建的应用程序甚至不需要“mailto:”功能,我只需要显示电子邮件地址。此外,这是一个商业网络应用程序,因此需要尽可能专业地显示/操作。以下是我的问题:

  1. 如果我采用document.write路线并传递每个字符的html实体版本,是否没有足够复杂的网络爬虫可以执行javascript并仍然提取呈现的文本?还是说这被认为是最佳实践并且完全(或几乎完全)避免垃圾邮件?

  2. 图像解决方案有什么不专业的地方?如果Facebook是世界上最高流量的应用程序之一,并且完全不是由业余人员运行的,为什么他们的方法在关于这个主题的其他讨论中完全被忽略了?

  3. 如果您的答案(如在其他帖子中)是不要自己烦恼而让用户的垃圾邮件过滤器处理所有工作,请解释一下您为什么这样认为。我们正在显示我们的用户提供给我们的电子邮件地址,我觉得有责任尽可能保护他们。如果您认为这是不必要的,请解释原因。

谢谢。

3个回答

4

目前有很多原因使得Javascript是一个好的解决方案(随着技术发展,这可能会改变)。

  • Javascript混淆现在是更好的陷阱
  • 你只需要跑得比别人快。只要还有低级漏洞,垃圾邮件发送者就会攻击。所以,除非每个人都开始使用javascript,否则至少现在你是安全的。
  • 大多数垃圾邮件发送者使用基于http的脚本,这些脚本使用正则表达式进行GET和解析。使用javascript引擎进行解析当然是可能的,但会减慢速度。

关于Facebook的解决方案,我不认为它不专业,但我可以清楚地看到为什么纯粹主义者可能不同意。

  • 它违反了无障碍标准(无法被浏览器解析、语音读取器或点击)。
  • 它破坏了语义结构(它是一个图像,不再是mailto链接)。
  • 它破坏了呈现层。如果你增加浏览器默认字体大小或使用高对比度自定义CSS,它不会应用于电子邮件。

4
  1. 它并不是防垃圾邮件的。如果有人查看您网站的代码并确定您正在使用的电子邮件地址模式,则可以编写特定代码来尝试解密它。
  2. 我不知道是否应该说它不专业,但它会阻止复制和粘贴功能,这是非常重要的。对于图片,您根本无法获得该功能。如果您想将相对复杂的电子邮件地址复制到Outlook中的通讯簿中,该怎么办?您必须采用打字的方式,这容易出错。
  3. 把责任转移给用户的垃圾邮件过滤器真的是一个很差的回应。虽然我认为用户应该勤奋地保护自己免受垃圾邮件的侵扰,但这并不能免除发布地址的人的责任。

因此,试图以绝对安全的方式进行此操作几乎是不可能的。唯一的方法是拥有共享密钥,该代码使用该密钥解密编码的电子邮件地址。问题在于,由于JavaScript在客户端上解释,因此您无法向刮刀保密任何内容。

现今的电子邮件地址编码器通常有效,因为大多数电子邮件机器人收割者不会特别关注为每个站点编写代码。他们将尝试拥有最小的算法,以获得最大的结果(否则回报不值得)。因此,简单的编码器将击败大多数机器人。但是,如果有人真的想要获取您网站上的电子邮件,则他们可以并且很容易做到这一点,因为编写地址的代码是公开可用的。

考虑到所有这些因素,Facebook选择了图像路线是有道理的。因为他们可以更改图像使OCR几乎不可能,他们几乎可以保证电子邮件地址不会被收集。鉴于他们可能是世界上最大的电子邮件地址存储库之一,可以认为他们承载着比我们任何人都更重的负担,并且虽然不方便,但被迫采取该路线以确保其庞大的用户群的安全和隐私。


很好的观点。这个网站与FB完全不同,所以我不需要那么安全。我同意OCR方面的看法,他们可能每次都会稍微改变图像,这使得OCR几乎不可能。我可能会使用JS解决方案,同时使用实体和每个请求唯一的自动生成密码。 - Rich

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接