不包含图形验证码的安全表单?

  今天看到这篇文章:Safer Contact Forms Without CAPTCHA’s,仔细想了下,得出的结论是,如果你的网站对于机器人来说没有什么太大的利用价值,那么这种验证方式已经足够了,如果垃圾信息发送者认为你的网站很有价值,那么破解起来也很方便。

1、先说原理
  我们使用图形验证码(当然还有声音等其他方式),主要就是欺负机器人看不懂复杂的图片。上面这篇文章中提到的方法就是将验证信息隐藏在用Ajax生成的表单隐藏域中,说白了,也就是欺负机器人看不懂JS生成的隐藏域和cookie。其实这只是个掩耳盗铃的做法。我们来看一下原文代码:

$ct mktime();
setcookie('token',md5('secret salt'.$ct), 0'/');
# 'Expires' in the past
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

# Always modified
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");

# HTTP/1.1
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0"false);

# HTTP/1.0
header("Pragma: no-cache");
echo 
$ct

  首先给浏览器一个加密的cookie值,然后给表单一个时间戳,验证时对比下cookie和时间戳的编码规则是否匹配。如果机器人要破解,有这么个办法:首先人工获取cookie和时间戳,然后伪造这个cookie,让机器人同时发送到评论入口就行了。

阅读全文 »

JQuery UI组件

jQuery UI  值得jQuery Fans兴奋的又一大喜讯,不过这已经是1个月之前的事情了。我好久没用到jQuery,没有那么狂热的关注,搞得现在手都有点生了,不过总体上感觉还是不错的。

  该组件包含了以下一系列眼花缭乱的功能:如拖动,包含,表格排序,拉伸,日历,对话框,滑动等等,但运行起来也相当的占资源,而且JS语言本身就有不稳定的特点,所以我的观点是,少用为妙,尽量朴素。详细参见 http://ui.jquery.com/