您当前的位置:首页 > 网络编程 > Js脚本 > 正文

《15天jQuery入门教程》第四天:更安全的Mailto链接

【字体大小: 2009-04-21 11:23 来源:译言 作者:ShiaoHoo 

  第一条法则:为了防止垃圾邮件,请不要将您的email地址放在mailto链接后面。

  为了和垃圾邮件发送者作斗争,web设计师和程序员已经发展了很多富有创意的解决方案。让我们稍微分析一下这些常用的方案的可行性和不足之处。(有些方法还尚未成熟)

  name[at-no-spam]website.com

  问题:一个正常email链接地址相对这样的地址将会更方便输入,而且容易出错。

  联系方式

  问题:你冒着让这些垃圾邮件发送者用你的帐号发送大量邮件的风险(除非你使用一个真正安全的formmail脚本),而且对于那些仅仅希望发送简单信息的来访者来说这个方案又过了。

  javascript加密

  问题:您的email地址仍然完全公开着,即使你使用先进的加密技术来掩藏它。而且谁会希望在一个第三方网站上通过加密算法同时运行12个email帐号,我可不想那样。

  隐藏在简单表单的后面

  (例如,访问Simon Willison的站点,你会发现在网页顶部有一个“隐藏我的地址”的按钮)

  问题:暂时想不到有什么问题,但让我们看看我们能如何改进这个方案。

  一个可能的解决方案:AJAX

  这里提出的解决方案相比以上方案将由一些web设计师们广泛运用的有点:

  • 易于执行
  • 易于改变
  • 被提出时有些让人迷惑
  • 不需要第三方工具加密email地址
  • 不会让email地址公开

  对于最后一点,我提醒那些依靠迷惑和隐藏email地址的email加密设备进行加密,认为垃圾邮件发送者不够聪明来逆向解密你的代码的人,那些在网上搜集email地址的人很可能用与你的加密算法对应的算法来获得地址。事实上,我认为email加密只是相对的安全,而其真正的email地址仍然隐藏在html源代码中。

  概念

  1. 使用jQuery从服务器上文件获取html内容
  2. 文件中包含email地址大多数是带有简单保护机制的html。(mailto链接)

  演示

  我将用一个显示email地址的例子来掩饰,对于每一个例子当用户单击按钮或者链接,email地址将会实时的出现在页面上。

  On button click - instant(单击按钮事件 - 即时)
  On link click - fade in(单击链接事件 - 淡入)
  On page load - fade in(页面加载事件 - 淡入)
  On page load - instant(页面加载事件 - 即时)

  注意:instant(即时),我的意思是没有花式的效果,尽可能快的显示链接

  代码

  这是在非商业CC许可证下发布的代码,如果你希望将代码用于商业产品请联系我,我现在正将其用在一个新的即将推出的WEB设计师的CMS项目中。

  点击这里获得代码(链接尚未加入,稍后加入)

  为什么这样比正常的mailto链接安全?

  mailto链接的最大的问题在于垃圾邮件发送者可以运用一些自动的软件通过搜索网络在html代码中找到他们。这很你用google搜索资料差不多:通过跟踪链接。

  垃圾邮件发送者和我们一样的懒。因此他们不可能在网上冲浪的时候人工记录下email地址再发送垃圾邮件。

  查看我的任意一个演示的源代码,你将发现email地址并不在html代码中。

  这会是一个绝对可靠的方法保证你将远离垃圾邮件的困扰,而只接受来自web访问者的友好访问吗?不是!

  但是将email地址从源代码中移除,在jQuery代码中改变秘密语(译者注:Secret Phrase这个翻译有问题),改变保存email地址的目标文件文件名将可能给你一个相对介于方便性和安全性之间的合理选择。

  最后的笔记

  仔细观察前三个例子的源代码,你会发现我运用了AJAX回调函数来触发slideDown()和show()效果。

  换句话说,我不希望jQuery在我通过AJAX从服务器读取到html信息前开始slideDown()效果的执行。将秘密语置于我们简单的服务器端脚本中使得从服务器接收信息需要花费时间。

  正确的方法:  

  1. $(document).ready(function(){  
  2. $.post('mailtoInfo.php',{  
  3.   pass: "secret" 
  4. },function(txt){  
  5.   $('div.email').html(txt);  
  6.   $('div.email').slideDown("slow");  
  7. });  
  8. });  

  错误的方法:  

  1. $(document).ready(function(){  
  2. $.post('mailtoInfo.php',{  
  3.   pass: "secret" 
  4. },function(txt){  
  5.   $('div.email').html(txt);  
  6. });  
  7.  $('div.email').slideDown("slow");  
  8. }); 
    顶一下
    (0)
    0%
    踩一下
    (3)
    100%
    【责任编辑:绝口不提】 标签: jQuery入门教程
    最新评论 查看所有评论
    发表评论 查看所有评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    评价:
    表情:
    用户名:密码:验证码: