怎样保证WordPress的安全

翻译自原文:How to Keep WordPress Secure

Matt所写。 归档于 开发, 安全.。

小洞不补大洞吃苦。对于bloggers来说这是永恒的真理,仅仅花一点时间在马上就升级上省下了很多之后修复一些问题的工作。

现在,旧版本WordPress并且也没打补丁的正遭受一种蠕虫病毒的攻击。这种特别的蠕虫病毒(跟以前的差不多)的攻击方法很聪明:先注册一个用户,利用一个安全漏洞(在今年早些时候已经修复)使攻击代码通过永久链接来执行就可以使得这个用户获得管理员权限,接着当你查看当前用户页面的时候使用JavaScript脚本来隐藏自己,接下去把自己清理干净。所以当它在你的旧文章里插入垃圾广告和恶意软件时你永远也不会发现。

尽管技巧非常的新颖,但对策仍十分古老。当这个蠕虫病毒正在“清理”阶段时:它并没有很好地隐藏掉,然后博主会注意到博客里的所有链接都已失效,这样便会使他深入探究并且意识到了危害的广度。以前的蠕虫病毒会做一些傻X的事情比如破坏你的站点,但这种新的却是安静且无法察觉,所以你唯一会注意到它的破坏的时候是他们已经破坏了你的博客(就比如先前提到的那个)或者你的网站已经被google移除搜索结果因为你的站点上有垃圾广告和恶意软件。

我在这里说这个并不是吓唬你,而是提醒你这是过去已经发生过的并且将更有可能再次发生。

还是那句话,小洞不补大洞吃苦。升级的确是一项工作量挺大的活儿WordPress社区也已经花了巨大的精力使现在升级只需一键升级。修复一个被黑掉的博客,从另一方面来说,也是非常辛苦的。打个比方来说,升级只是投入一些精力;而修复被黑掉则是心脏直视手术。(对于所需的花费来说,也是一样的。)

2.8.4,目前WordPress最新的版本,对于先前提到的那个蠕虫病毒是免疫的。(2.8.4之前的一个版本也是对此蠕虫免疫。)如果你已经在计划要升级但还没正式行动,现在就开始做吧!如果你已经升级了你的博客,或许督促、检查下你朋友的或者你阅读的那些博客,看看他们是不是需要帮助。还是那句话,小洞不补大洞吃苦。

不管蠕虫病毒什么时候登门拜访,每个人都可以使用如下三种技巧中的一种:1.阴险的小技巧;2.Club方案;3.真正的解决方案;来成为安全专家。第一种阴险的小技巧是你马上现在就可以使用的就是隐藏WordPress版本号,然后就没事儿了。额。。。不过,蠕虫的作者也会考虑这个。他们的1.0版本的蠕虫也许检查的版本号,但2.0只是测试性能,版本号根本没用。

第二种方法是Club 方案。为了阐述这个方法,我引用下Mark Pilgrim7年前一篇非常好的对付spam的文章(那是比WordPress年龄还久远的年代啊)

真正有意思的关于这些方法的,从博弈论的角度来看,是他们都是Club 方案,而不是Lojack方案。有两种基本的方法来防止你的车被盗:The Club(或者The Shield,或者汽车防盗情报,又或是其他类似的东西),以及Lojack。Club方案对于一个坚定地想要偷你车的贼来说并不怎么起作用(钻锁孔、拆掉方向盘并且关掉Club都是非常简单的)。但是对于某个只是想偷车(并非一定是你的车)的贼还是非常有效的,因为贼通常是非常慌忙的而且是找最容易下手的目标(打个比方,就像是低垂的果实)。只要不是每个人都装Club或者每个人都装了Club,对于贼来说就会花费等同的时间在任何一辆车上,于是他们的选择就会给予其他因素,那么你车的被盗可能性就跟其他车一样了。Club并不会使小偷不偷你的车,只是让他换个目标。(Aaron注:其实Club就是防君子不防小人的意思)。

Club式的博客安全方案可以是非常简单的(就比如一个.htaccess文件)也可以是非常复杂的(就像双因素验证),然后他们就可以工作了,特别是针对已知的漏洞利用。Club方案可以非常有用,就好像使用一个足够强、复杂的密码——没有人会不推荐这么做。(另外一个Club方案是换一个更少人用的软件,基于这样一个架设又也许更像是该软件声称:这是完美而且更加安全。这是为什么BeOS比Linux更加安全。)

在汽车的领域里,如果某些人发明如何将整辆车传送至“赃车店”,Club或许就不再那么有用了。不过对于Club的制造商幸运的是,这还未发生。但在网络和软件的世界里,相同的事情几乎每天发生。这里也只有一个真正的实际方案。如今以及将来我唯一能保证你的博客安全的事情就是不断地升级。

WordPress是一个由上百人组成的社区,每天都在阅读代码、审查、升级,并且在保证博客的安全性上花费了足够大的精力。我不是千里眼我也不可能预测那些写垃圾广告的、黑客、破坏者、骗子们将来会想出什么办法来损坏你的博客,但是目前我只知道只要WordPress还在我们将会尽一切力量确保软件是安全的。我们已经把升级核心组件和插件做成了一键升级。如果我们找到某些有问题的地方,我们将会发布一个修复补丁。请升级,这是唯一我们能互相帮助的。

WordPress 2.8 RC!

今天WordPress 2.8 RC1发布了!详情请见这里开发日志上就几行文字,没什么好翻译的,就不翻译了。2.8到RC1的变化戳这里。而2.8的正式版应该可能在6月10号发布

博客程序也升级到2.8 RC1了。

今天也是个好日子,twitter等相继解封了,不知youtube会怎样。

教程:为你的WordPress博客建立IE 8 Web Slices

翻译自原文:Tutorial: How to Write an IE8 Web Slice for WordPress Blogs

Web Slices或许是IE8最酷的功能之一了。一些朋友可能会发觉实际上这和Firefox的Live Bookmarks比较相似,不过,IE8 Web Slices可以做的更多而不仅仅只是订阅RSS源。

容我解释一下。打个比方,你对eBay上的某个物品感兴趣并且想尽快得到这个物品的更新通知,比如谁谁谁出了个新价或者卖家修改了产品的描述又或者是运费。要做点这点,可以在你的浏览器里不断刷新这件物品的页面,而更简单的方法则是增加eBay slice功能。

然后现在无论这次拍卖发生了任何的变化,它会即时地反应在你IE8浏览器的收藏夹工具条上。点击这个书签(或者web slice)来获取哪些地方发生了变化。

其实IE8的web slice就是一个内嵌在你浏览器内的迷你页面,也不管你现在是在上哪个网站。而且不像Firefox的Live Bookmarks那样只是一个下拉式菜单显示网站的头条消息。在IE8的中的wen slices你拥有的是对样式的完全控制权使它能多种多样丰富起来。

如何建立IE 8 Web Slice

网站主有这个责任为他/她的网站开发web slices功能。你首先需要决定哪些内容会被呈现在web slice上,更新的频率是多少以及这个web slice的样式如何。

这里(MSDN 库)提供了一些文档来教你如何上手开发web slices,包括了一个样式指南来确保你的web slice在浏览器内看起来不错并且有较强的可读性。

你可能会发觉这个文档本质上太技术化了点,但是千万不要灰心,下面是一些非常简单的例子告诉你如何去为任何使用WordPress的博客(自己独立架设的)定制一个web slice。

1: <html><head>
2: <title>Page Title</title>
3: </head><body>
4: <div class="hslice" id="techologynews">
5:  <h2 class="entry-title">IE 8 web slice</h2>
6:   <div class="entry-content">
7:    <p><a href='#'>Link 1</a></p>
8:    <p><a href='#'>Link 2</a></p>
9:    <p><a href='#'>Link 3</a></p>
10: </div></div>
11: </body></html>

一个IE8 Web slice只是一个简单的HTML页面,结构如上。你只需指定web slice的标题(这是显示在浏览器收藏夹工具条上的),然后在“ entery-content ” 类(第7-9行)中替换成你自己的内容即可。

你也可以自己定义CSS样式,比如这个实例 – 在IE8内打开这个链接来看浏览器是如何自动侦测到页面上的这个web slice(绿色的slice图标会闪)。

如果你还没装IE8或者在你电脑上获取web slice有任何困难,这里有一个高清视频demo(译者注:原文没有这个视频的任何链接,可能作者失误了)。

Web Slices in Internet Explorer 8 – Demo

如果你有一个WordPress(自己独立架设的)博客,下面教你如何创建一个IE8用户可以加到他们菜单栏上的web slice。

在你的WordPress安装目录下创建一个新的文件(比如 webslice.php),然后复制粘贴如何代码到这个php文件下。

<html><head>
 <title>Page Title</title>
</head><body>
<div class="hslice" id="1">
 <h2 class="entry-title">Your Site Name</h2>
 <div class="entry-content"><ol>
<?php
  require_once('wp-load.php');
  $results = $wpdb->get_results("SELECT post_title, guid
          FROM $wpdb->posts where post_status = 'publish'
     ORDER BY ID DESC LIMIT 5");
  foreach($results as $row) {
   echo "<li><a href='".$row->guid . "'>"
     . $row->post_title ."</a></li> n";
  }
?>
</ol></div></div>
</body></html>

代码非常简单。实质是创建一个到你WordPress数据库的连接并且创建了一个将会显示到wen slice上的最近发布博客文章的列表,如果有人在IE8内订阅你的站点的话。

如何在IE8里安装 Web Slices

至此你的web slice功能已经就绪,现在可以把这个slice发布到你的网站上让使用IE8的访问者可以把这个slice加入到他们的收藏夹工具条上。

接下去,我们会创建一个简单的HTML按钮使得点击它会自动把这个web slice加入到IE8中。

<input type="button" value="Add [site name] Web Slice"
     onclick='window.external.AddToFavoritesBar("http://web-slice-url",
	"Your Website Name", "slice");' />

如上的Web Slices教程是特别为WordPress博客写的。如果你是在其他平台上建立自己的博客的,参考这篇文章:turn the RSS feed into a Web Slice

WordPress 2.7 简体中文版发布

WordPress 中文团队也已经根据官方的压缩包制作出了简体中文版。

本次更新,主要是大的版本更新,更新的东西很多,具体详见http://wordpress.org/development/2008/12/coltrane/。

本次中文版本发布,共修改了3个核心文件:

wp-config-sample.php 文件:将其中的说明文字汉化为简体中文,并且修改默认语言为 zh_CN。

readme.html 文件:对该说明文档进行完全汉化。

wp-settings.php:修改PHP版本提示为简体中文。

下载地址(这里我们提供了 tar.gz 和 zip 两种压缩包的下载,请大家根据自己的需要下载。此次升级的更新文件数目较大,不提供升级包,直接覆盖即可。):

Bug提交:WordPress 爱好者论坛

下载注意事项:

1. 请选择合适的版本非 P2P 下载器下载,建议直接用 IE 自身下载即可。
2. Bug 提交后,我们会尽量及时更新的,列表中显示的是正在处理的 Bug,已经处理完成的便不会直接显示在列表里,如果想查看只要搜索一下就可以了,我们是不会删除任何 Bug 报告的。

本中文版由WordPress中文团队制作,做了以下修改(相对于英文原版):

加入wp-content/languages/zh_CN.mo中文包;
加入了 zh_CN.po,方便大家对中文包自行修改;
修改wp-config-sample.php中的“define (’WPLANG’, ”);”为“define (’WPLANG’, ‘zh_CN’);”;
汉化readme.html文件;
加入中文 Dashboard 插件,方便大家得到更多的中文信息(插件需用户自行启动);
加入了美化中文后台的插件,让中文后台的文字更好看。
以上两个插件皆为WPCNG团队制作,有任何问题可以直接反馈给我们。

请按以下步骤进行升级:

备份你修改过的文件,并上传新版本文件直接覆盖掉旧版本文件;
上传所有新文件;
在浏览器中打开 http://您博客地址/wp-admin/upgrade.php;
升级完成。

WordPress 中文团队再次感谢您的支持,希望您能继续反馈给我们中文包的建议和错误,让我们一起将 WordPress 中文做得更好!

WordPress 2.7 “克特兰”[原文翻译]

原文链接:WordPress 2.7 “Coltrane”

Matt所写。分类于Development下。

2.7你最关注的莫过于其新的界面。我们一直听取你们所有的反馈并深入地思考了新的设计,现在结果是WordPress明显更快了。基本上每项你在你博客上要做的任务将比之前的版本有更少的点击并且更快。(点击这里下载!,或者继续看下去。)

接下来你将会注意到一些新功能被巧妙地整合进了新的界面:新的后台管理可以让你把你觉得最重要的功能拖放到顶端、快速发表、回复留言、分页、能在后台回复评论、能直接从WordPress.org一键安装插件。

更深一步,你也许会注意到每幅画面都是可定制的。比如你从不关心你文章列表的作者–只要点击“屏幕选项”然后不钩选它,于是它马上就从页面消失了。只要在后台管理或者写页面里都是一样的。如果你的画面很窄而且菜单占用了过大的横向空间,点击箭头以使其最小化成仅有图标。接下来进入写页面,把所有右栏的东西都拖下到中间一栏,于是你写东西的区域就变成全屏了。(例如除开类别、标签和发布,我喜欢隐藏所有东西。我把类别和标签放在右边,把发布置于写文章的下面。)

这里有个视频介绍2.7(有高清版本,并能全屏):

这都是关于你的。2.7是下一代WordPress,所以也是为什么我们有这样的荣幸以John Coltrane的名义赠与。并且你今天就可以下载了

最后,但肯定不是最不重要的,这次可能是最后一次你手动升级WordPress。我们了解你自己和你朋友们对于不断升级已经厌倦了,所以WordPress包含了一个内建的升级,这会自动提醒你有新的版本。当你准备下载、安装和升级你的博客的时候只需一次点击即可完成。

(对于这次的界面改变,也许需要一点时间来适应,不过很快你就会发觉一切操作都很爽。甚至一些起初讨厌这样界面的人经过几天之后告诉我们他们发觉之前是错的。)

2.7背后的故事

2.7能取得这样一个巨大的进步的真正原因是因为社区热情参与了改变的每个方面。超过150人直接贡献了这个版本的代码(从未有过的), 更有数以万计的参与了投票、调查、测试、邮件列表以及其他反馈机制,所有这些WordPress开发团队都采纳并加进了这个版本。

查看这些博客可以知道更详细的2.7开发背后的故事(多亏WeblogToolsCollection提供了这个列表):

有趣的是,事实上我们写博客关于这个博客软件,但是过程却变得非常有益。在今天发行之前,Crazyhorse和2.7已经被数以千计的人在他们博客上测试。反馈的数量之大是的我们不得不选择放缓发行日期一个月,以腾出时间仔细斟酌,然后基于你们所说的做更多的改变。

对于那些想知道为什么我们不直接就叫这个版本为3.0,这是因为我们讨厌版本号泛滥。3.0只是2.9的下一个版本。重大的功能改变却仅仅在版本号的小数点后+1同样效果不错,比如苹果的OS X(多处钟到改变,然而版本号仅从10.3升到了10.4)。

未来

相信很多人已经注意到这是今年第二次主要的重新设计WordPress。Whoa nelly!尽管这还不够理想,但是话又说回来我非常同情为WordPress写书和写教程的,这是个好消息。WordPress 2.5到2.7的变化使得我们有必要打破许多传统的界面,那些慢慢在这几年建立起来的,更重要的是提供我们一个UI框架和界面语言来让我们可以在这基础上设计明天的WordPress,以表达我们过去无法表达的概念。所以在2009年底我希望WordPress看起来和现在基本一样。

话虽如此,我们对于未来新功能的兴奋程度依然不减。既然我们已经完成了一些基本的东西,我们期望明年能去改善媒体处理方面(包括音频和视频)、提供插件和主题开发者更好的工具、widgets、主题升级、更多整合的功能和帮助文档,以及与类似BuddyPressbbPress项目更简单的整合。

谢谢你们

最后,我们想花点时间感谢如下的WordPress.org用户为2.7贡献了一部分:082net, _ck_, Aaron Brazell, Aaron Campbell, Aaron Harp, aaron_guitar, abackstrom, Alex Rabe, Alex Shiels, anderswc, andr, Andrew Ozz, andy, Andy Peatling, Austin Matzko, axelseaa, bendalton, Benedict Eastaugh, betsyk, Björn Wijers, bobrik, brianwhite, bubel, Byrne Reese, caesarsgrunt, capripot, Casey Bisson, Charles E. Frees-Melvin, Chris Johnston, codestyling, corischlegel, count_0, Daniel Jalkut, Daniel Torreblanca, David McFarlane, dbuser123, Demetris Kikizas, Dion Hulse, docwhat, Donncha O Caoimh, Doug Stewart, Dougal Campbell, dsader, dtsn, dwc, g30rg3x, guillep2k, Hailin Wu, Hans Engel, Jacob Santos, Jamie Rumbelow, Jan Brasna, Jane Wells, Jean-LucfromBrussels, Jennifer Hodgdon, Jeremy Clarke, Jérémie Bresson, jick, Joe Taiabjee, John Blackbourn, John Conners, John Lamansky, johnhennmacc, Joost de Valk, Joseph Scott, kashani, Kim Parsell, Lloyd Budd, Lutz Schröer, Malaiac, Mark Jaquith, Mark Steel, Matt Freedman, Matt Mullenweg, Matt Thomas, matthewh84, mattyrob, mcs_trekkie, Michael Adams, Michael Hampton, MichaelH, mictasm, Mike Schinkel, msi08, msw0418, mtekk, Nick Momrik, Nikolay Bachiyski, Noel Jackson, Otto, Ozh, paddya, paul, pedrop, pishmishy, Po0ky, RanYanivHartstein, raychampagne, rdworth, reinkim, rickoman, rm53, rnt, Robert Accettura, roganty, Ryan Boren, Ryan McCue, Sam Bauers, Sam_a, schiller, Scott Houst, sekundek, Shane, Simek, Simon Wheatley, sivel, st_falcon, stefano, strider72, tai, takayukister, techcookies, Terragg, thinlight, tott, Trevor Fitzgerald, tschai, Txanny, Valiallah (Mani) Monajjemi, Viper007Bond, Vladimir Kolesnikov, wasp, wet, wfrantz, x11tech, xknown, xorax, ydekproductions, yoavf, yonosoytu, yoshi, zedlander

PS:关于John Coltrane,中文译名普遍为约翰 克特兰,所以我这篇文章用“克特兰”作题。他是WordPress创始人Matt Mullenweg最喜爱的萨克斯手。

WordPress 2.7 即将发布

刚才看到的消息,WordPress 2.7正式版将在美国东部时间12月4号晚8点发布,也就是北京时间12月5号早上5点发布。这篇文章里也介绍了如何使用新的后台管理系统。

还有不到2天的时间了,这个被寄予厚望的号称WordPress 3.0的版本即将发布了!期待那天的到来(可惜还是跳票了…)!

WordPress 2.7 RC1发布[原文翻译]

原文链接:WordPress 2.7 Release Candidate 1

Ryan Boren所写。 分类于Releases下。

随着RC1的发布,我们现正处于2.7发布前最后的开发阶段。自从beta3以来已经280个改变致力于新的后台管理界面(包括由我们图标设计比赛优胜者设计的新菜单图标)并修复了所有已知的错误。

我们觉得RC1已经准备好接受每个人的蹂躏。请下载 RC1并尽可能帮助我们使最后的2.7版本是最好的。当然,就像以前一样,在升级前请备份你的博客

点击这里获取RC1

WordPress 2.6.5 发布

(来自:Leo)WordPress 2.6.5 修正了一个可能会引发跨站攻击的 Bug。幸运的是,这个Bug 只影响运行 Apache 2.x 的基于 IP 的虚拟主机。

除此之外,另有以下三处改进:

  1. 防止日志元信息意外地写入到修订版本之中
  2. 防止 XML-RPC 获取错误的日志类型
  3. 在批量删除前对用户 ID 进行检查过滤

WordPress 2.6.4 已经被跳过。语言包无变化,可沿用 WordPress 2.6.2 的语言包。

下载:

已在使用 WordPress 2.6.3 的用户只须下载升级补丁,并上传覆盖已有文件即可。

WordPress 2.6.5 [原文翻译]

原文:WordPress 2.6.5

Ryan Boren所写。 分类于 Development下。

WordPress 2.6.5 现在可以下载了。这次更新修复了一些安全性上的问题和3个bug。我们推荐每个人都去升级到2.6.5。

这个安全性的问题是Jeremias Reith发现的一个XSS溢出,所幸这个问题仅仅影响运行Apache 2.x的基于IP的虚拟主机。如果你仅对这个BUG感兴趣,从2.6.5的压缩包里复制wp-includes/feed.phpwp-includes/version.php两个文件即可。

2.6.5还有另外3个小的修复。

  • 第一个是防止日志meta信息意外地写入某个版本。
  • 第二个是防止XML-PRC获取错误的日志类型。
  • 第三个则是在有批量删除请求时加入某些用户ID处理。

如果要那些改变的文件的列表, 察看这个从2.6.3到2.6.5的 完整的变化列表

另外需要注意的是,从2.6.3到2.6.5跳过了2.6.4,这是为了避免对于一个假的2.6.4版本的疑惑。绝对不会有2.6.4这个版本。

WordPress 2.7 Beta 3[原文翻译]

原文链接:WordPress 2.7 Beta 3

Mark Jaquith所写。分类于Releases下。

WordPress 2.7 Beta 3 已经发布。那些测试者应该感到十分高兴。这里是自从Beta 2以来的一些改变(总计超过160个改变):

  • 许多样式的改进和完善。
  • 所有的管理通知都在页面标题下。
  • PHP通知问题的修复。
  • 后台管理的Widget选项可以适当地保存.
  • 修正菜单。
  • 快速编辑的新的设计。
  • 标准订阅url的修正。
  • 修正Walker。
  • 一个Hello Dolly的更新。
  • 插件安装的一些更新。
  • 许多字体的更新。
  • 更新了登陆Logo。
  • 在发布模块里更换了“保存草稿”和“预览”按钮。
  • 支持MS Office 2007的文件格式的上传。
  • 如果用户不能上传,媒体上传按钮就不会显示。
  • 标准重定向可以选择是否包含www。
  • 对于多选范围的改进。
  • 现在分离了添加新用户页面。
  • 标签仅提示建议的标签(没有其他分类的词条)。
  • 如果用户不能发布,快速发表显示为“提交以审核”。
  • 私有日志/页面以及密码保护的日志/页面打包成了新的发布模块里的“可见性”部分。

如果你已经安装了Beta1 或者 Beta 2,你可以通过工具-〉升级菜单来升级到Beta 3。如果你有任何问题,或者这是你第一次使用2.7 beta 系列,你可以下载并升级覆盖旧文件。

下载 2.7 Beta 3