2006年6月9日星期五

eWebEditor编辑器的安全漏洞

  今天帮一个朋友清除了Z-Blog里的一个系统漏洞。

  早上,ilmay发邮件给我,说他博客进不去,要我帮忙,我去看了下,发现页面文件里被加入了iframe恶意木马病毒,应该是被黑了,可能是利用了系统里的某个漏洞。因为他用的是Z-Blog Plus,和我用的自己修改的Z-Blog有点类似,因此我对这个漏洞也比较感兴趣。

  经过对IIS日志文件的分析,我发现原因是eWebEditor编辑器有重大漏洞。Z-Blog Plus提供了eWebEditor编辑器,却没有说明如何正确使用,并且不做任何修改而直接使用的话,简直就是一场灾难。

  首先的一个漏洞是eWebEditor提供了后台登录,默认用户名和密码可以登录进去。

  其次,eWebEditor目录下的Upload.asp文件,有一个极为幼稚的错误,即对于文件过滤只是通过sAllowExt=Replace(UCase(sAllowExt), "ASP", "")来禁止上传asp文件,那么为什么不同时过滤asa、cer等文件呢?而且怎么可以用这种有问题的语句进行过滤呢?事实上,黑客正是利用这个漏洞上传了一个后缀为asa的木马文件。

  解决这个问题的方法是,先用admin登录到后台,修改密码,然后删除admin_login.asp文件,如果不需要上传的话,最好连upload.asp也一起删除掉。另外我看了看eWebEditor的代码,感觉写的比较乱,可能还会有其他漏洞,不建议使用这个编辑器。

  对于Z-Blog的安全,我觉得,应该尽量少地增加一些编辑器或其他插件,关闭用户注册功能,关闭附加编辑器的上传功能,不要使用一些有安全漏洞的编辑器,这样才可以保证系统的安全性。

  另外要少在页面里添加外部的script代码,特别是统计代码。我就曾经为了统计浏览数而增加了一个名叫武林榜(50bang)的统计代码,曾经发现偶尔会出现病毒,也有用户举报,以前总以为是不是武林榜服务器被黑客攻击,后来才知道原来武林榜和周鸿袆、庞升东等搞过9991这样声名狼藉的木马病毒的人有着密切的关系,因此我以最快的速度将武林榜的代码从我所有网页里删除,防止其再去害人。

  在当今之中国,网民是命中注定要被那些做网站的老流氓们强奸,即使高手也会防不胜防。

2006年6月7日星期三

拼音输入法简评

  拼音输入法可能是大多数中国人必备的软件之一。拼音输入法最重要的是什么?我觉得是用户体验。

  以前用DOS的时候,用的都是中文系统自带的输入法,没有太多选择,后来用Windows,一开始使用的是智能ABC输入法,这个输入法是微软自己开发的中文输入法,虽然微软开发了不少中文输入法,但大多都很不好用,用户体验很不好,智能ABC算是好一些的。

  后来在BBS上聊天知道了紫光输入法,初次使用这个输入法,感觉非常好,和智能ABC形成很鲜明的对比。紫光输入法的输入速度非常快,体验非常好。其界面也清新干净,因此这个输入法也成为我的首选输入法。

  然而令人遗憾的是,紫光输入法的BUG较多,比如录入条经常无法隐藏,词库经常引起系统崩溃,我记得几年前,当我用的紫光频繁崩溃后,我曾打算放弃紫光,尝试找一些类似的拼音输入法,我找到了拼音加加。

  那时候的拼音加加版本较低,不过拼音输入还算可以,和紫光很相似。然而令人遗憾的是,早期的拼音加加使用了类似流氓软件的营销方式,每次我启动拼音加加,IE的首页都会被修改为拼音加加的地址,我手动修改回去,下次它又会修改回来,如此反复几次,我忍无可忍,只得将其卸载,这时我才感觉到紫光拼音是多么的好。

  树立良好的第一印象是非常重要的,拼音加加早期的这种行为实在很愚蠢。我也对拼音加加早期的这种行为表示不能接受和理解。虽然最近我也重新下载了拼音加加,发现最新版本已经可以禁用修改主页功能了,但是默认还是要修改主页,新版本的拼音加加使用起来还算可以,就是界面较为难看,我还是喜欢紫光那种干净清爽的界面。

  最近,从Keso那里知道了一个新的输入法:搜狗输入法,据说“目前还不是流氓软件”,根据搜狗自己的介绍,这个输入法能够“利用先进的搜索引擎技术,自动分析互联网上出现的新词热词,通过分析统计中国互联网35亿中文页面,获得最佳的词频排序,并动态升级输入法和词库。”

  这个思路的确很不错,很吸引人,于是我也下载安装了一个搜狗输入法,第一感觉还可以,其界面和使用方法和紫光拼音非常像,连快捷键也类似,不过搜狗的LOGO实在难看,希望能去掉。录入文字的时候,感觉也不错,很清爽的界面,看来紫光拼音终于后继有人了。

  不过我对搜狗和搜狐的印象不是很好,搜狗开发过工具栏流氓软件,我在搜狐注册的信箱也饱受搜狗垃圾色情邮件的连番轰炸,想退订都找不到地方。因此我还是对搜狗输入法保持警惕的态度,没准过几天它就摇身一变,干出一些令我们惊诧莫名的事情呢。

  另外在具体实现技术上我也有一些疑惑,比如搜狗拼音输入法说可以“自动分析互联网上出现的新词热词”,那么是通过什么方法实现的呢?如果是通过于搜狗服务器进行数据通讯,那么搜狗输入法是否将本地用户信息传输出去了呢?这种传输有没有什么安全隐患呢?没有上网的电脑如何获得“新词热词”呢?

  从这里我们也看到了一个问题,一个网络公司的品牌是多么至关重要。一个声誉好的网络公司提供的软件,用户可以放心大胆的使用和测试,而一个声誉不是特别好的公司提供的软件,用户在使用前就会犹豫不决,这恐怕也是这些公司当初开发流氓软件和发送垃圾邮件时没有预料到的事情吧。

  更新:另外提一句,人们对于各个拼音输入法的关注程度,可以通过Google Trends来看个究竟,通过这个链接,我们可以发现尽管紫光拼音还处于第一的位置,但是人们对紫光拼音的关注呈现下降趋势,目前已经快和拼音加加相等了,而智能ABC和微软拼音的搜索数目偏低。

2006年6月5日星期一

对于迅雷事件的思考

  最近中国网络界的抵制迅雷事件被炒的沸沸扬扬。

  事件的起因是,6月2日,国内最大的下载网站之一的华军和天空都宣布停止其迅雷下载,并发表了声明。两网站的声明基本一致,都指出迅雷是以盗链接(P2SP)的方式来进行下载加速,迅雷大量收集并盗用提供本地下载服务的网站下载链接,增加被盗网站的成本,造成了这些网站的直接经济损失,也侵犯了用户的隐私。

  对此,许多网民对此很不理解,他们认为迅雷给其提供了更快的下载方式,因此站在支持迅雷的一边。

  由于我从来没有用过迅雷,下载一直使用FlashGet,因此也不好对迅雷的技术做太多的评价,不过从各处搜索到的资料来看,我对迅雷采用的P2SP技术也大概明白了原理,其和P2P技术的BT下载是完全不同的,它通过搜集用户的下载信息,自动将各个下载站的下载链接整理出来,这样就使得用户可以直接通过链接下载文件,而不用再访问下载站的页面,这种访问方式,在业界叫做盗链,不仅能占用下载站服务器所购买的带宽,还会对下载站的广告业务造成损害。而迅雷则可以在不花一分钱的情况下使用别站提供的资源,甚至建立下载门户,完全不必担心购买下载服务器和带宽的问题。

  据我所知,传统的下载站做的很辛苦,需要不断增加服务器和带宽,才能应对更多的用户,获得更多的广告收入。对于下载网站来说,服务器和带宽的成本也非常高。举个例子来说,一般网站使用的100M共享的服务器托管,价格大约是每年5000元左右,实际上是几十台机器一起放在一个100M带宽的机柜里,运气好的可以获得2M左右的带宽,这样的带宽对于一般普通网站来说是足够的,但是对于下载站来说肯定是不够的,一般下载站使用的是独享100M带宽,这个大约是每年8万元左右的租用费用,独享100M带宽是个什么概念,这个带宽意味着理论上可以提供50个2M带宽的ADSL用户同时以250K的速度进行文件下载,而大型下载网站的同时在线人数起码有数千,为了给更多的用户提供更快的访问速度,就需要购买更多的服务器和更大的带宽,其费用实在不是个小数字,因此需要在下载页面上做广告以获得广告收入。而迅雷通过搜索引擎式的索引,便免费拥有了所有现在下载站的资源,而自己却没有花一分钱去租用带宽和服务器,这显然对于下载站是不公平的。华军和天空对迅雷进行抵制也是情有可原的。

  可惜的是,大部分上网用户不会知道托管、带宽这些事情的,许多网友沉浸在“免费”的互联网能够提供的巨大的“免费资源”的幼稚幻想中,却不知道在中国互联网上并没有什么活雷锋可以免费提供带宽,如果网站的广告费用不足以支持租用带宽的费用,那么网站的唯一下场就是关闭。因此迅雷的盗链行为的确缺乏道德支持,对于迅雷来说,解决这次事件的方法其实也很简单,就是迅雷自己要投入资金购买自己的服务器和带宽,一年应该也只有几十万元,这样就可以避免和各个下载站的矛盾了,从道理上讲的话,这样做也公平一些。

2006年6月4日星期日

无花的蔷薇

  人和人的魂灵,是不相通的。

  ......

  这不是一件事的结束,是一件事的开头。

  墨写的谎说,决掩不住血写的事实。

  血债必须用同物偿还。拖欠得愈久,就要付更大的利息!

  以上文字是鲁迅于一九二六年三月二十九日在《语丝》周刊上发表的《无花的蔷薇之二》的节选。

  一个事件之所以被称之为“重大历史事件”,是因为无论如何篡改、隐瞒、淡化、甚至销毁相关历史证据,其始终是令人刻骨铭心、永志难忘的。

  1980年的韩国“光州事件”,韩国的两届总统全斗焕和卢泰愚都一直企图掩饰“光州事件”的真相,在金泳三当政时的1996年,韩国前总统全斗焕和卢泰愚被起诉,最后全斗焕被判无期徒刑,卢泰愚被判入狱17年,“光州事件”获得了平反。

  1947年的台湾“二二八事件”,经过了长达半个世纪的隐瞒和篡改,也在1995年被平反,国民党前后任主席连战与马英九也都曾在2003年与2005年,就此事件而向台湾人民公开道歉。但依然无法避免国民党在连续两届大选中失败,二二八事件成为国民党的原罪,五十年后竟然还影响着政局和人心。

  历史是不能被忘记的,忘记历史意味着背叛。我们的历史不管是辉煌的还是耻辱的,我们都不应该忘记历史,不应该让悲剧重演。

2006年6月3日星期六

热文排行的算法进行了优化

  今天打算更改一下我的Blog的文章排行算法。

  以前的算法是根据点击数目来排行,有很多不足的地方,比如没有考虑时间因素,没有考虑用户对其的推荐等因素,最近使用抓虾系统的时候,对抓虾的“热文排行”算法产生了兴趣,因此我也打算使用类似的排行来进行我的Blog的文章排行。

  其中的积分算法是比较难确定的,我打算以文章浏览次数,评论次数,引用次数以及文章的日期来生成。把用户的评论数目作为推荐次数,文章的发表日期到今天的时间做为时间因素。

  1条评论和100次浏览有相同积分。

  1条Traceback等于2条评论的积分。评论和引用的增长是线性的。

  浏览次数增大,取得的积分以开平方根的方式增长,即数字越大,变化越小。

  文章的日期做为负积分,以指数方式增长,越老的文章,会变为越来越大的负数积分。

  用数学算法表示即:log_CommNums*100 + log_TrackBackNums*200 + sqr(log_ViewNums)*10 - (date()-Log_PostTime)*(date()-Log_PostTime)

  从这个算法中,引用和评论对积分的增加影响最大,时间因素对积分的减少影响最大。以这个算法产生的“热文排行”见左边,其每天会自动更新,我将观察一段时间,看看这个算法的效果如何。

  具体的修改方法如下:

  在c_system_event.asp中加入下面的函数:

'*********************************************************
' 目的:    重建排行
'*********************************************************
Function BlogReBuild_Toplist()

 Dim i
 Dim objRS
 Dim objStream
 Dim objArticle
 Dim strLogUrl

 Dim strPrevious
 Set objRS=objConn.Execute("SELECT [log_ID],[log_Url],[log_Title] FROM [blog_Article] WHERE [log_Level]>1 ORDER BY log_CommNums*100 + log_TrackBackNums*200 + sqr(log_ViewNums)*10 - (date()-Log_PostTime)*(date()-Log_PostTime) DESC")

 If (Not objRS.bof) And (Not objRS.eof) Then
  For i=1 to ZC_PREVIOUS_COUNT
   strLogUrl=objRS("log_Url")
   If IsNull(strLogUrl) Or IsEmpty(strLogUrl) Or strLogUrl="" Then
    strLogUrl=objRS("log_ID")
   End If
   strLogUrl=ZC_BLOG_HOST & ZC_STATIC_DIRECTORY & "/" & strLogUrl & "." & ZC_STATIC_TYPE
   strPrevious=strPrevious & "<li><a href="""& strLogUrl & """>" & objRS("log_Title") & "</a></li>"
   objRS.MoveNext
   If objRS.eof Then Exit For
  Next
 End If
 objRS.close

 strPrevious=TransferHTML(strPrevious,"[no-asp]")

 Set objStream = Server.CreateObject("ADODB.Stream")
 With objStream
 .Type = adTypeText
 .Mode = adModeReadWrite
 .Open
 .Charset = "utf-8"
 .Position = objStream.Size
 .WriteText = strPrevious
 .SaveToFile BlogPath & "/include/toplist.asp",adSaveCreateOverWrite
 .Close
 End With
 Set objStream = Nothing

 BlogReBuild_Toplist=True

End Function
'*********************************************************

  然后在MakeBlogReBuild函数的BlogReBuild_Categorys后面加上一行BlogReBuild_Toplist。

  修改c_html_js.asp,在f="TRACKBACKS"后面增加
 ElseIf f="toplist" Then
  f="TOPLIST"

  修改single.html模板文件,在合适的位置增加下面几行。
<div class="function" id="divTopList">
<h3>热文排行</h3>
<ul>
<script language="JavaScript" src="<#ZC_BLOG_HOST#>c_html_js.asp?include=toplist" type="text/javascript"></script>
</ul>
</div>

  最后,重建索引,重建文件,就完成了。

  具体效果参见本页左边的“热文排行”栏目。

  更新:在Z-BLOG 1.7下的修改方法

  前面修改代码不变,之后,修改TEMPLATEdefault.html模板,在适当位置加入以下语句:

<div class="function" id="divTopList">
<h3>热文排行</h3>
<ul>
<#CACHE_INCLUDE_TOPLIST#>
</ul>
</div>

  修改TEMPLATEsingle.html模板,在适当位置加入以下语句:

<div class="function" id="divTopList">
<h3>热文排行</h3>
<ul id="ulToplist">
<script language="JavaScript" type="text/javascript">strBatchInculde+="ulToplist=toplist,"</script>
</ul>
</div>

  最后重建索引即可。

  参考文章:抓虾指数的热文排行的产生

  来源:http://www.zhuaxia.com/blog/?p=20

  抓虾的热门文章是大家“顶”上来的。对于每篇文章,每个人有且仅有一票(包括我们虾米自己也一样,只有一票)。推荐出来的文章,按下面的规则排列顺序,希望能够兼顾文章的新鲜(按时间)和价值(按票数)。

  1、两天之内推荐的文章,优先于超过两天的;

  2、同样是两天之内推荐的文章,票数高的优先;

  3、同样是两天之内,且同样票数的文章,最近被推荐过的优先。

  也就是说,假如一篇文章在两天内无人继续推荐,估计大家对它的兴趣就不大了,或者说它有点“过时”了,它就应该被排在后边。

  “两天”的窗口期是暂时拟定的,以后也许会调整。另外,每个人的那一票,以后的权重可能会不一样(比如,如果小虾推荐的文章总是被大家认可,那末小虾以后的推荐会更有分量。)总的想法,还是希望平衡文章的新鲜和价值。以后会加分类,搜索,和过滤功能,让大家更方便地看到自己喜爱的文章。
 

Google打不开的解决方法

  在Google.com里面进行搜索的时候,经常会遇到突然出现“该页无法显示”的提示,并且之后的十多分钟都无法正常连接Google,这里给出一些方法,可以解决大部分Google无法访问或进不去的问题。

  1、最开始可以先尝试重新拨号的方法。如果是搜索过程中出现“该页无法显示”的提示,接着就无法访问Google,那么对于ADSL用户,可以尝试断开网络连接,然后重新拨号上网,这样你的IP地址就发生了变化,这时候就可以正常访问Google了。(其原理是防火墙只是针对IP封用户,而不是针对独立电脑)

  2、如果一开始就无法访问Google,那么请把下面这一行:

  216.239.63.104 www.google.com 或者 64.233.171.99 www.google.com 或者 216.239.53.99 www.google.com

  添加到:C:WINDOWSsystem32driversetchosts文件里,就着访问Google看看是否正常。(其原理是提供较为少用的Google镜像访问)

  3、使用Google的镜像IP地址来访问Google,Google有很多IP地址,通过IP可以直接访问Google。

  4、使用Google其他国家的域名来访问Google,例如Google日本的域名google.co.jp,不过请注意,Google其他国家的服务器也在美国,因此搜索词语的时候也会出现“该页无法显示”的可能。

  5、如果碰到DNS劫持的封锁方法,那么需要选择正确的DNS服务器,将主DNS设置成国外根服务器的DNS,然后辅助DNS设置成国外的DNS。具体做法:在拨号网络或网卡属性里设置,主DNS设成 202.12.27.33,辅助DNS:202.216 .228.18(日本DNS),或者使用美国的OpenDNS,首选DNS服务器和备用DNS服务器分别设置为208.67.222.222和208.67.220.220。大家还可以自己找一些快的国外DNS。 (其原理是DNS劫持只能够控制国内的DNS服务器,而对于国外的DNS服务器则无能为力,因此只要不使用国内的DNS即可)

  6、对于GMail,使用http访问访问的话最好不要选择“带有聊天功能的标准视图”,否则容易中断。尽量使用加密的https地址 https://mail.google.com 来访问GMail,这将极大提高访问的稳定性,并且在GMail里使用GTalk也很稳定。

  7、使用加密的代理服务器软件(SSH,VPN)来访问Google,当然目前的一些免费的加密代理服务器都不是很稳定,速度也不是很理想,建议购买收费版。

  8、使用HTTPS来访问Google,由于Google的Https域名encrypted.google.com也被DNS污染,因此需要修改hosts文件,Windows系统中Hosts文件的优先级高于DNS服务器,操作系统在访问某个域名时,会先检测HOSTS文件,然后再查询DNS服务器。可以在hosts添加受到污染的DNS地址来解决DNS污染和DNS劫持。

Google无法访问

  当然,上面的方法有时可能会实效,我觉得最稳定和有效的方法是HTTPS的Google搜索,HTTPS版本的Google一劳永逸地解决目前几乎所有的问题,https是安全访问网站的一个重要的方法,目前还没有看到能截获https的加密数据的防火墙,因此搜索任何关键字都没有问题,目前Google的HTTPS搜索唯一的遗憾是没有图片搜索功能。

2006年5月31日星期三

购买域名和会员服务

  今天打算购买一个域名,却意外的购买了一年的域名交易会员服务。

  本来我在Godaddy有一个优惠码,可以使用6.95美元的价格购买域名(正常的价格是8.95美元),但是今天我打算购买一个新域名的时候,发现这个优惠码过期失效了,正在失望之中,却意外发现Godaddy又有另外一项新优惠,即只需要购买非域名的一项服务,即可以1.99美元的价格购买一个域名。

  这时候我发现,如果购买Godaddy的域名交易平台TDNAM会员服务一年,价格也只有4.99美元,加上1.99美元的域名,也才6.98美元,非常划算,因此,我就一口气将这两项都购买了。

  支付我使用的是PayPal支付的,非常快捷安全,我不想使用我招行的信用卡支付,一来国内信用卡的安全性做的不好,二来我PayPal里还有不少美元,我也没有将其托收回来(据说有人托收过PayPal支票失败过),干脆就在国外全花掉算了,也省得托收那么麻烦了。

  我个人觉得Godaddy的域名服务实在很不错,功能很齐全,价格也非常便宜,Godaddy的域名交易市场TDNAM是一个不错的服务,域名持有人和投资人可以在里面进行域名的交易和买卖。

  TDNAM是年费制的网站,一年要收取4.95美元的年费。 他们的交易手续费为5%,最低要收5美元。这次购买了其TDNAM一年的会员服务,正好在上面出售我注册的几个空闲域名,看看在上面做交易是否顺利。

  不过,Godaddy也有一些缺点,因为我这里和美国有12小时的时差,我白天发咨询邮件,通常他们的技术支持还在梦香之中,等他们醒来给我回复的时候,我也睡觉去了,这样的结果是一个支持反馈信息通常要等一天才收到。