2009-04-08 101 views
5

是的,我意识到这个问题已经被问到并回答了,但是我对此有一些具体的问题,我觉得在那个线程上并不清楚,我也不希望在另一个线程的混乱中迷失方向。 。电子邮件混淆问题

上一个主题表示,按照Facebook的方式将电子邮件地址呈现为图片的方式对于商业/专业网站来说是过度杀伤和不专业的用户体验。而且似乎普遍的共识是使用HTML实体或其他方法分解和/或使得字符串无法被简单的机器人读取的JavaScript document.write解决方案。我正在构建的应用程序甚至不需要“mailto:”功能,我只需要显示电子邮件地址。此外,这是一个商业Web应用程序,所以它需要看起来/尽可能专业。这里是我的问题:

  1. 如果我去执行document.write路线,并通过每个字符的HTML实体版外,还有没有网络爬虫足够成熟,执行JavaScript反正拉呈现的文本?或者这是否被认为是最佳做法,并且完全(或几乎完全)是垃圾邮件制造者的证据?

  2. 关于图像解决方案,怎么这么不专业?如果Facebook是世界上交易量最高的应用程序之一,并且完全不由业余爱好者操作,那么为什么他们的方法在有关此主题的其他主题中完全被驳回了?

  3. 如果您的答案(如在其他线程中)不会为此问题而烦恼,并让用户的垃圾邮件过滤器完成所有工作,请解释您为什么这么认为。我们展示了他们给予我们的用户的电子邮件地址,我有责任尽我所能保护他们。如果您认为这是不必要的,请解释原因。

谢谢。

回答

4
  1. 这不是垃圾邮件发送者的证明。如果有人着眼于为您的网站和DET代码隐藏您用于电子邮件地址的模式,然后可以编写特定的代码来尝试解密。

  2. 我不知道我会说这是不专业的,但它防止复制和粘贴功能,这是一个很大的问题。有了图像,你根本就没有那个功能。如果您想在Outlook中将相对复杂的电子邮件地址复制到您的地址簿,该怎么办?你必须求助于输入它容易出错。

  3. 将责任移交给用户垃圾邮件过滤器确实是一个糟糕的回应。虽然我相信用户应该勤于防范垃圾邮件,但这并不免除发布地址的责任人。

为此,试图以绝对安全的方式做到这一点几乎是不可能的。唯一的方法就是拥有一个共享密码,代码用来解密编码的电子邮件地址。这个问题是因为JavaScript在客户端被解释,所以没有任何东西可以让你从刮板上保密。

现在的电子邮件地址编码器通常工作,因为大多数电子邮件机器人收割机不会专注于每个站点的编码。他们将尝试使用最小化算法,以获得最大的结果(否则,回报是不值得的)。正因为如此,简单的编码器将击败大多数机器人。但是,如果有人真的想要访问您网站上的电子邮件,那么他们可以也可能很容易,因为写入地址的代码是公开可用的。

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

+0

伟大的观点。这个网站不像FB,所以我不需要那么安全。我同意OCR,他们可能每次都略微改变img,这将使OCR几乎不可能。我可能会做一个JS解决方案,它使用实体和每个请求唯一的自动生成的密码。 – Rich 2009-04-08 15:18:39

4

不少原因Javascript现在是一个很好的解决方案(随着景观的发展,这可能会发生变化)。

  • 的JavaScript混淆是现在
  • 你只需要逃脱别人更好的捕鼠器。只要挂果不多,垃圾邮件发送者就会为此付出代价。所以除非每个人都开始转向javascript,否则你现在至少可以使用
  • 大多数垃圾邮件发送者都使用基于http的脚本,这些脚本使用正则表达式进行GET和解析。使用JavaScript引擎解析肯定是可能的,但会减慢速度

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

  • 它打破了无障碍标准(无法通过浏览器,语音读者解析或点击。
  • 它打破了语义结构(这是一个形象,而不是一个mailto链接了)
  • 它打破了表象层。如果增加浏览器的默认字体大小或使用高对比度的自定义CSS,它将不适用于电子邮件。