2007年3月11日星期日

网站的安全登录认证设计

  用户登录是任何一个应用系统的基本功能,特别是对于网上银行系统来说,用户登录的安全性尤为重要。如何设计一个网站的安全登录认证程序,是本文主要讨论的问题。

  静态密码存在着比较多的安全隐患,攻击者有很多手段获得静态密码,管理密码也具有较高的成本,我在前文《中国网上银行系统安全性分析》中曾经论证过,使用硬件安全产品“动态密码锁”或者“USB Key”可以较好的解决这个问题,但是会带来加密锁的成本,在不增加硬件成本的情况下,我们也可以通过一些设计上的技巧和措施在一定程度上来保证登录者的身份。

  一、客户端和服务器端的安全

  客户端的安全,主要是用户密码本身的安全性(密码长度和复杂性等)以及用户电脑的安全性,包括用户电脑没有安装黑客木马软件,登录程序没有被第三方程序加载调试,用户录入框组织键盘Hook程序等等,通过一些代码即可解决。

  服务器端的安全,包括服务器自身的安全(系统漏洞等等)以及程序设计上的安全,我这里主要讲一下程序设计上的安全。最基本的问题是,用户的密码不应该直接保存在服务器的数据库上,也不应该将密码用单钥算法加密后保存,最基本的认证方式是通过单向散列函数对密码进行认证。在《软件加密技术和注册机制》一文中介绍了一些单向散列函数可以实现简单的认证。目前大多数网站都使用MD5函数进行登录认证,不过我推荐使用安全性更高的SHA1散列函数来进行登录认证。

  二、网络传输上的安全

  目前的网络协议通过HTTP协议进行通讯,存在很大的安全隐患,黑客可以通过SNIFFER工具进行抓包分析网络数据包,因此用户名和密码的传输应该使用非明文的方式传输,这里就用到了“公开密钥密码”的概念。

  学过基本的“密码学”的人都应该知道“公开密钥算法(也叫非对称算法、双钥算法)”这个概念,即用作加密的密钥不同于用作解密的密钥,而且解密密钥不能根据加密密钥计算出来。

  加密的传输过程分为两部分,一部分为身份认证,用户鉴别这个用户的真伪;另外一部分为数据加密,用于数据的保密。这两部分功能都需要用到非对称加密技术。

  首先是身份认证,通讯的数据可以这样进行处理,将用户的信息(用户名、密码等)用该用户的私钥进行加密,然后再进行传输,而在服务器端会保存此用户的公钥,用此用户的公钥对传过来的信息进行解密,就可以得到正确的明文,这样就完成了一次安全的网络通讯。

  通讯过程的示例如下图所示,Alice用自己的私钥对明文进行加密后传输到服务器,服务器上的用户(例如Bob)拥有很多用户的公钥,因此使用Alice的公钥对密文进行解密,如果密钥正确的话,就可以解密出明文,也就完成了对Alice的身份认证。

公钥认证过程

  然后是数据加密,数据加密和数据认证正好相反,使用接收方的公钥对数据进行加密,传输的过程中,即使数据被黑客截获,也无法使用这些密文,接收方收到密文后,用自己的私钥对密文进行解密,从而完成了一次数据的加密传输。

  通讯过程的示例如下图所示,Alice需要发给Bob一段加密的信息,因此Alice就用Bob的公钥对明文进行加密后传输给Bob,Bob收到信息后,使用自己的私钥对密文进行解密,就可以解密出明文,也就完成了对Alice的发来密文的解密过程。

公钥加密的过程

  目前的公开密钥算法主要有RSA和ECC,RSA是比较老的算法,基于大质数分解,速度较慢,ECC(椭圆曲线)是最新的公钥加密算法,基于离散对数计算,速度比RSA快,安全性据说更高一些。

  当然,上面的所说的技术只是最为基本的身份认证技术,只是适合一般网站应用,对于电子商务和银行来说需要更为复杂和权威的安全认证系统。目前比较流行的是PKI技术。PKI(Public Key Infrastructure)是一种新的安全技术,它由公开密钥密码技术、数字证书、证书发放机构(CA)和关于公开密钥的安全策略等基本成分共同组成的。PKI技术已经被广泛应用于电子政务和电子商务,被证明是保证基于互联网的电子政务和电子商务安全的最佳解决方案。完整的PKI建设需要大量的资金和人力才能完成,这里就不多介绍了。

2007年3月10日星期六

新版Google桌面的新功能

  据Google Desktop官方博客的介绍,Google Desktop在周四推出了一个beta版的第五个版本的桌面产品,这个版本主要在搜索、侧边栏和小工具上进行了一些变化。

  侧边栏有了一个全新的显示效果,其显示的颜色会根据用户的桌面墙纸的颜色自动变化,融合进背景,使得侧边栏显得更协调。

  在小工具上,我们发现可以使用更多的实用小工具,甚至还包含月光博客的订阅地址(谢谢阿企的发现,在技术和工具分类中可以找到我的订阅地址)。

Google桌面

  搜索上的变化是,搜索结果具备了预览功能,用户在浏览器右侧可以看到预览的搜索结果,这样,寻找信息比以前就更容易了。

  安全性同时也得到了增强。当点击文档或者邮件的链接时候,如果Google桌面发现可能有恶意软件或者钓鱼网站,系统会发出警告提示,从而增强了操作的安全性。

2007年3月9日星期五

关于Google域名的自动转向问题

  这些天,有部分读者给我留言反馈了一个特殊情况,说有时访问Google.COM,浏览器会自动转到Google.CN,有人在怀疑Google是不是打算在中国正式用Google.cn代替Google.com。

  听到这个消息,我在第一时间进行了验证,并没有出现访问Google.COM后自动转到Google.CN的情况,因此我怀疑可能是网络DNS解析错误,或者是Google在服务器端做的临时测试。

  如果还有人遇到这种情况,请使用下面的方法进行测试,可以进一步推断问题到底出在哪里。

  运行CMD,然后运行PING WWW.GOOGLE.COM,看一下当前Google的IP地址。

  然后访问一下IP地址查询的网站,例如123cha,在线查看一下Google的IP地址,对比两者IP地址是否相同。

Google域名的DNS查询

  正常情况下应该是相同,如果两者完全相同,而访问Google发生了自动转向,则原因就在Google服务器端,可能Google在服务器上进行某种测试工作,也可能是路由器端的HTTP挟持

  如果不相同的话,说明本地访问Google的线路被电信或网通等服务商挟持。解决这种问题的方法是,在IE中进行如下图的设置,然后在DNS设置中选择一个安全的DNS服务器(例如OpenDNS的DNS IP地址:208.67.222.222,208.67.220.220)。

IE设置界面

  当然,也可以直接修改C:WINNTsystem32driversetchosts 文件,加入一行 216.239.63.104  www.google.com 也可以解决域名DNS错误的问题。

  不过,也有可能是电信路由器挟持,通过路由器挟持的话,IP地址等均不会出现异常,但是HTTP返回包会被篡改,以前电信搞这些是为了弹出恶意网站的广告,这种技术的确也可以做到将A网站自动转向到B网站的功能。

Google网络相册进行了升级

  据Google官方博客报道,Google已经做出了几个改善Google网络相册(Picasa Web Albums)的动作。新的社区图片搜索功能可以更为方便地搜索和发现其他人拍摄的照片。免费存储空间升到了1G空间(以后还会继续增大),这个空间足够存放4000张标准分辨率的照片了。Google还会将照片的链接进行了简化,以便能更加方便地从邮件、IM或者网站上共享照片。

Google网络相册进行了升级

  不过,目前除了空间以外,搜索功能目前只在英文版的Picasa Web Albums上才有,中文版的估计稍后才会开放。大家可以通过这个链接提前体验一下。

  其实,我看到这个消息是很欣慰的,因为就在一个月前,我还发表了自己对Picasa Web Albums的强烈忧虑,并提出了四点建议,而目前的Google竟然很巧合地增加了这些功能,正好满足了我以前的建议,看来Google还真的很贴近最终用户啊。

  不过,我目前使用的主力相册依旧是FlickrPanoramio,如果Google Earth能集成Picasa Web而不是Panoramio的话,我就打算转向到Picasa Web了。

  最后,为了能随时随地更方便拍摄照片,更快地更新我的网上相册,我打算周末去搜索一下拍照手机,目前看好SONY K790C/800C。

2007年3月8日星期四

WordPress的Blog可以做为OpenID了

  据WordPress的官方博客报道,现在已经可以使用你在WordPress的博客地址做为OpenID了。

  你已经厌倦了记住几十个不同的用户名和密码了吗?在不同的网站注册不同的用户让你感到厌烦吗?

  OpenID是一个新标准,旨在减轻上述问题和麻烦,因此WordPress使得所有在WordPress.com有Blog的人都拥有了一个OpenID。这意味着你可以在其他网站上使用你已有的WordPress.com帐号进行登录。

  你的OpenID就是你的WordPress Blog地址。

  例如,我的OpenID就是williamlong.wordpress.com。不过这个地址无法从国内访问。

 

2007年3月7日星期三

META标签的常见用法

  最近,Danny Sullivan谈到了如何处理的搜索引擎meta标签的问题,以下是一些关于在Google中如何处理这些问题的答案。

  多内容数值

  我们建议你把所有的Meta标签内容放在一个meta中。这将使得meta标签更易于读取并降低发生错误的概率。例如:

  <META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">

  如果一行包含对个meta标签,我们将会累加标签的内容,例如,我们会将

  <META NAME="ROBOTS" CONTENT="NOINDEX">
  <META NAME="ROBOTS" CONTENT="NOFOLLOW">

  理解为:

  <META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">

  如果内容的数值有冲突,我们将使用最严格的那个。所以,如果有个页面包含下面的meta标签:

  <META NAME="ROBOTS" CONTENT="NOINDEX">
  <META NAME="ROBOTS" CONTENT="INDEX">

  我们将只遵守noindex的数值。

  单词拼写规范

  Googlebot可以理解任何大小写的组合,所有大小写都是同样的效果。如果包含多内容的数值,数值之间需要使用逗号分隔。

  同时使用robots.txt和robots meta标签

  如果你同时使用了robots.txt文件和robots meta标签,如果robots.txt和meta标签有冲突,googlebot将使用限制更严的。具体来说:

  如果你在robots.txt里禁止了某一页,Googlebot永远也不会去索引那一页,也不会读取那一页的任何标识。

  如果你在robot.txt中允许,但是在页面中使用 meta 标签对其进行限制,那么Googlebots会访问那一页,读取里面的标签,但不会对其进行索引。

  有效的meta标签数值

  Googlebot可以对下面的标签进行如下的解读:

  NOINDEX - 阻止页面被列入索引。

  NOFOLLOW - 阻止对于页面中任何超级链接进行索引。(注,这不同于超级链接上的nofollow属性,那个属性只是组织索引单独的链接)

  NOARCHIVE - 不保存该页面的网页快照。

  NOSNIPPET - 不在搜索结果中显示该页面的摘要信息,同时不保存该页面的网页快照。

  NOODP - 在搜索结果中不使用Open Directory Project中的描述信息作为其摘要信息。

  NONE - 相当于“NOINDEX, NOFOLLOW”。

  数值NONE的含义

  据robotstxt.org的定义,下面的标记等价于 NOINDEX, NOFOLLOW 。

  <META NAME="ROBOTS" CONTENT="NONE">

  不过,有些网站站长使用这个标签来限制和组织所有搜索引擎来的内容索引。

  翻译人:William Long

  译文地址:META标签的常见用法

  英文原文:Using the robots meta tag

2007年3月6日星期二

免费网站流量统计服务

  Google Analytics是一个非常专业的流量统计服务,我在使用众多国内外服务后选中了她,由于目前网站统计分析软件众多,现在我就简要评述一下我所用过的一些网站流量统计服务和软件。

  所评测的流量统计分析服务应该包含如下功能的统计分析:独立访问数(访问网站的独立用户数目),页面浏览数(所有访问者浏览的页面数量),访问最多的页面,引用入口(用户从哪里过来的),弹出率(用户是在哪个页面退出的),用户客户端软硬件情况(操作系统、浏览器版本、显示分辨率等)。通过这些数据的二次统计分析,我们还可以得出一些数据背后的分析信息,例如通过页面总浏览数/独立访问数,可以得到每个用户访问时候的浏览页面总数目,用这个数目可以分析网站内容的“粘度”,内容质量越高,约吸引人,其数值就越高。

  在介绍之前,我先将统计分析服务进行一下分类,一类是网站日志驱动的,一类是网页代码驱动的。

  网站日志驱动的流量统计服务有不少,最大的好处是不用在网站内加入任何代码就可以完成日志分析,日志分析非常准确详细。缺点是耗费CPU较大,汇总数据速度很慢,对于大网站的长期汇总需要占用大量硬盘空间。

  1、AWStats :大名鼎鼎的AWStats是一套免费基于Perl的网站日志分析工具。这个工具界面较为友好,执行速度快,扩展功能众多,在国外空间使用apache服务器的,AWStats是当之无愧的首选。缺点是不支持某些编码的中文,日志需要大量空间,安装设置较为复杂,需要安装Perl,对IIS支持不是特别好,缺少更高层次的分析(例如Google Analytics)。

  2、FastStats Analyzer:我在IIS下使用这个GUI的软件可以直接分析网站日志文件,这个软件和AWStats不同,是GUI界面的,不支持WEB方式,安装和运行都非常简单,可以快速得出网站的汇总分析。缺点是速度较慢,对于大型网站日志速度更慢,同时也缺少更高层次的分析。

  网页代码驱动的服务不需要网站日志文件,只需要将一段代码加入到网站的所有页面中,就可以得出汇总分析报告。不过这样的调用比较占用统计网站自身的资源,因此对于大型网站一般都是收费服务,很多免费的统计工具因为流量的问题,只能对于小型网站进行统计分析。

  1、Google Analytics: 免费版版本有每月5百万综合浏览量的限制,但是,具备有效Google AdWords帐户的用户可无限制地进行综合浏览量跟踪(注册AdWords只需要50元开户费)。支持对于中大型网站的统计分析,没有广告。不像其他的免费分析工具,Google的分析不会通过添加广告代码或图标来获取流量。统计分析功能也很强大且专业,可以比较任一报告的任意两个日期范围,将某一月份的周五进行比较,或者将春季与秋季进行比较,还可以每天将统计报告以电子邮件的方式发送到用户信箱,非常方便实用。缺点是较为复杂的功能让普通用户无所适从。

  2、StatCounter:StatCounter的特别之处在于免费提供一个可隐藏的计数器,这是很非常难得的,对于中大型网站的统计也支持,不过就是数据会少一些。统计分析的功能比Google Analytics弱一些,不过比Google Analytics强的是支持定期邮件汇总报告,这个功能非常实用。

  3、百度统计:百度提供的免费网站流量统计工具,强力推荐。百度统计的速度很快,很适用于中文网站,对于大流量的网站也可统计,最为难能可贵的是,百度统计提供的是一个可隐藏的计数器,这点比雅虎统计要好的多。

  4、雅虎统计:中国雅虎提供的免费网站流量统计工具,速度很快,对于中文网站来说比较适用,不足之处在于提供的统计器不能隐藏,需要在页面上显示“雅虎统计”等字样,不甚美观。

  5、Clicki:国内的一个专为博客以及个人网站提供动态统计的Clicki系统,实时显示访问者详细信息以及反向连接来源信息。申请和使用都很简单,不过对于大流量的网站来说会拖慢网站显示速度。

  6、SiteMeter: 为网站提供免费统计服务,和其它免费统计不同的是,它可以每天发统计报告到用户的邮箱,很方便。

  总之,不显示图标的统计分析服务我见到的非常少,所以我基本上就只用上面几个,如果大家还用过其他什么好的统计分析服务,请也告诉我。