wordpress 2.0.6

wordpress 2.0.6发布了!更新信息如下:
补上了一个安全漏洞
HTML quicktags可以在Apple浏览器Safari上正常使用;
格式化留言,防止它们破坏blog布局;
PHP/FastCGI安装兼容性调整。

为解决这个安全漏洞添加了attribute_escape()函数。
还增加了名为“query”的filter。

下载wordpress2.0.6
Dev Blog: WordPress 2.0.6

修补wordpress的受攻击弱点

多个版本的wordpress都有这个受攻击弱点。

WordPress Wordpress (B2) 0.6.2 .1
WordPress Wordpress (B2) 0.6.2
WordPress WordPress 2.0.5
WordPress WordPress 2.0.4
WordPress WordPress 2.0.3
WordPress WordPress 2.0.2
WordPress WordPress 2.0.1
WordPress WordPress 2.0
WordPress WordPress 1.5.2
WordPress WordPress 1.5.1 .3
WordPress WordPress 1.5.1 .2
WordPress WordPress 1.5.1
WordPress WordPress 1.5
WordPress WordPress 1.2.2
WordPress WordPress 1.2.1
+ Gentoo Linux
WordPress WordPress 1.2
+ Gentoo Linux 1.4
+ Gentoo Linux
WordPress WordPress 0.71
WordPress WordPress 0.7

但这个弱点已经在2.0.6中修补,但当前流行使用的版本为2.0.5,所以大家还是自己补上吧:
我翻了一下我保存的各个版本的wordpress,不知道为什么也找不到原文中提到的代码。(wordpress应该是没有attribute_escape()函数的)
2.0.5中应该是这样修补的:
打开 your-wordpress/wp-admin/templates.php (应该在114行),找到
echo "

  • ” . get_file_description(basename($recent)) . “
  • “;
    修改为

    echo "<li><a href='templates.php?file=" . wp_specialchars($recent, true) . "'>" . wp_specialchars(get_file_description(basename($recent))) . "</a></li>";

    wordpress-1[1][1].5.2、2.0 RC2、2.0.2 - 2.0.4的templates.php原代码是这样的,

    echo "<li><a href='templates.php?file=$recent'>" . get_file_description(basename($recent)) . "</a></li>";

    修改为

    echo "<li><a href='templates.php?file=" . wp_specialchars($recent, true) . "'>" . wp_specialchars(get_file_description(basename($recent))) . "</a></li>";

    打开 your-wordpress/wp-admin/templates.php ,找到
    echo "

  • ” . get_file_description(basename($recent)) . “
  • “;
    修改为

    echo "<li><a href='templates.php?file=" . attribute_escape($recent) . "'>" . wp_specialchars(get_file_description(basename($recent))) . "</a></li>";

    查看更多:Wordpress Template.PHP HTML Injection Vulnerability
    跨站脚本攻击(XSS)FAQ

    抵御留言spam

    关掉Bad Behavior后,Akismet平均每天能拦截下六七十个spam,让人极其不爽。
    所以又开始关注抵御spam的plugin和hack。最近香港的wordpress user提到的解决方法之一,使用.htaccess编辑rewrite规则,可将spam拒之门外。但使用到.htaccess,也注定这个方法具有一定的危险性,一不留神,可能是500报错。
    在逛v2ex时得到一个启发,得出一种抵御留言spam不错的方法,经过一天的试验,可以基本保证留言spam不再发生。但此方法只能抵御留言spam,不能抵御trackback和pingback。
    原理就是spam留言机器人,是不会打开javascript的。所以如果你关闭了javascript将无法在冰古blog中留言了。
    由下图可看到akismet收集到的spam都是trackback
    fight comment spam

    修改方法:
    在模板comments.php页中查找textarea标签,如冰古blog的:

    <p><textarea name="comment" id="comment" cols="70" rows="10" tabindex="4"></textarea></p>

    用下面的代码覆盖:

    <script type="text/javascript"><!--
    document.write("<p><textarea name=\"comment\" id=\"comment\" cols=\"70\" rows=\"10\" tabindex=\"4\"></textarea></p>");
      //--></script>

    DONE!

    BTW,冰古blog也用上了ajax留言
    Update:看来这个还不是很完美,第二天出现了留言spam。但两天的spam总数为21,已经大大改善。

    怎样将wordpress从盘古搬到DreamHost

    第二次在不同空间商间搬家,本以为是驾轻就熟的事,但实际操作起来却花费了不少时间。其中有自己对新空间操作面板的不熟,也是自己想熟悉DreamHost提供的各种工具。

    不罗嗦熟悉工具的过程,让我们直接到怎样将wordpress盘古搬到DreamHost吧。
    1、备份
    登陆到盘古的cpanel中,用cpanel中的备份工具将整个虚拟空间备份、下载。(这里是为保证你在DreamHost与原空间相同)
    2、将下载后的备份文件解压
    你需要上传到DreamHost的文件都位于backup-xx.xx.xxxx_xx-xx-xx_yourid/homedir/public_html(此处不要使用www文件夹)
    但先不忙上传。
    3、登陆dreamhost控制面板,Domains -> Manage Domains中点击Add New Domain / Sub-Domain添加你的域名。添加后提示你需要修改域名的DNS为DreamHost的DNS,但这时先不忙修改。(dreamhost为每个虚拟空间提供一个免费的顶级域名。在注册空间时,我选择了注册DreamHost的二级域名。理由是,当你不使用DreamHost的空间时:转出域名可能要费一番周折;或你选择在DH续费域名,但这时你需要支付$9.95)
    4、Goodies -> One-Click Installs 选择你的域名与相应的文件夹例如我的域名:bingu.net和blog文件夹:blog,然后简单地按下Install it for me now!
    你用二级域名访问你的wordpress?再次在Domains -> Manage Domains添加你需要的二级域名吧。
    5、导入数据库:
    登陆你的phpMyAdmin(位于 Goodies -> Manage MYSQL),选择在第4步添加的数据库,在右栏选择“操作”,将其中的“整理”选择为“utf8_general_ci”后执行。
    选择“Import”,将你的“sql备份”导入进去。
    6、修改wordpress文件:
    打开yourwpfolder/wp-includes/wp-db.php

    $this->dbh = @mysql_connect($dbhost, $dbuser, $dbpassword);
    $this->query("SET NAMES 'utf8' ");           //加入此行!

    7、上传其他文件:
    你的wordpress自己修改过了?除了wordpress你还有其他文件?将他们打包成.zip,用DH提供的net2Ftp上传吧。(建议每个包不大于2mb!压缩包里的内容将直接解压到上传的文件夹中,务必选上Use Folder Names…
    net2Ftp上传压缩包后自动解压
    8、现在去修改域名的DNS吧,数小时后你的wordpress就悄悄地转移到DreamHost上了。

    如何在wordpress显示摘要

    一个初使用wordpress的同学都会问的问题,如何在wordpress的首页中只显示文章的摘要?
    在不使用任何hack和plugin的情况下,有两种方式可以实现:

    使用the_excerpt标签
    使用方法查看更多精彩内容»