脆弱性対策施した「WordPress 3.0.2」配布
オープンソースの Blog ソフトウェア『WordPress』のユーザーに重要なお知らせだ。
今すぐ端末のところに走って行って、Wordpress を使ってセルフホストしている Blog をただちに更新してもらいたい。
WordPress.org が11月30日、最新版『WordPress 3.0.2』の配布を開始した。新版はいくつものセキュリティ脆弱性に対策を施しているが、衝撃的なのは、それらのいずれにも (現時点においては) 共通脆弱性識別子 (CVE) 番号が付されていないことだ。
今回対処したセキュリティ ホールの1つは、クロスサイト スクリプティング (XSS) の脆弱性だ。これは、プラグインを削除する際にユーザーを脅威にさらすおそれがあるものだ。
また、「悪意を持つソフトウェア作者レベルのユーザーにサイトへのさらなるアクセスを許しかねない、(深刻度が) 中程度のセキュリティ脆弱性」と WordPress が表現する脆弱性にも対応している。そう、WordPress 3.0.2 に更新しないかぎり、自分のサイトの管理者権限を別のユーザーに奪取されるおそれがあるということだ。
こうしたセキュリティ脆弱性への対応以外では、「readme」ファイルの中にある WordPress のリリースに関するライセンスを明確にする記述がほんの少しだけ変更されている。
「われわれは、WordPress 全体が『GNU 一般公的使用許諾契約』(GPL) の第2版『GPLv2』(すなわち「GPLv2 のみ」) に基づいているとは言えない。GPL にのみ基づくという立場に戻る」(WordPress の変更履歴 15534より)。
WordPress 3.0.2 now available
A new maintenance release of WordPress is now available. This maintenance release fixes a moderate security issue that could allow a malicious Author-level user to gain further access to the site, addresses a handful of bugs, and provides some additional security enhancements.
You can, as usual, update automatically from within your dashboard or download the latest release from the WordPress website.
WordPressをSQL Anywhereと組み合わせて使用するには
概要
SQL Anywhereは、興味深い機能を備えたシンプルで強力なデータベースです。フットプリントが小さく、自己管理能力と実用性に優れており、エンタープライズデータベースに必要とされる多くの機能を持ちながら、ごく普通のハードウェア上で動作させることができ、管理の手間も最小限で済みます。
さらに、SQL Anywhereはパフォーマンスの高い双方向の同期機能を備えているため、データベースアプリケーションと既存のエンタープライズデータセンターとの統合を簡単に実現できます。この最後の利点は、企業のブログインフラストラクチャにおいて特に重要な意味を持つと考えられます。
この技術情報記事では、WordPressの環境を変更して、SQL Anywhereデータベースと連携して動作できるようにする方法を説明します。
はじめに
この記事はWordPressに焦点を絞っていますが、同様の手法を利用して、ほとんどすべてのPHPアプリケーションを移行できます。ここで取り上げる WordPressの例では、標準のWordPress環境にドロップできるSQL Anywhere用のプラグインを作成します。このプラグインを利用すれば、WordPressのコードに他の変更を加えなくても、SQL Anywhereを使用できます。
この記事では、PHPサポートが有効になっているWebサーバが既にあり、そのサーバにSQL Anywhereがインストールされていることを前提としています。今回の設定では、Apache 2、PHP 5、WordPress 2.3.3、SQL Anywhere 10を使用し、WindowsとLinuxの両方でソリューションをテストしました。
手順としては、まず標準のWordPress環境を出発点とし、wp-db.phpをwp-adminからwp-content\db.phpという名前のファイルにコピーします。このファイルの名前と場所は重要です。サイトに対するアクセスがあると、WordPressソフトウェアはこのファイルを探し、ファイルが存在する場合はそれを既定のwp-db.phpファイルの代わりに使用します。この仕組みを利用して、WordPress用の独自のデータベースアクセス層をプラグインできます。
データベース接続のセットアップ
次に、このdb.phpファイルを編集して、SQL Anywhereで使用できるようにします。SQL Anywhere PHPドライバー(ここを参照)はMySQLと同様のAPIをサポートしているため、「mysql_」を検索して「sqlanywhere_」に置き換えるだけで、移行作業の大半が完了します。
つまり、mysql_connect()をsqlanywhere_connect()に変換すればよいのです。
MySQLとSQL Anywhereでは接続文字列の形式が異なりますが、どちらも同じ基本データ(ユーザー、パスワード、サーバの場所、データベース)を使用します。接続文字列を変換する作業は簡単です。
//MySQL connection
$this->dbh = @mysql_connect($dbhost, $dbuser, $dbpassword);
//SQL Anywhere connection
$connstr= “eng=” . $dbhost . “;uid=” . $dbuser . “;pwd=” . $dbpassword . “;dbn=” . $dbname . “;links=shmem,tcpip”;
$this->dbh = @sqlanywhere_connect($connstr);
必要な作業はこれだけですと言いたいところですが、実際には、ブログの作成を開始する前に、変更しなければならない項目がいくつかあります。
データベーススキーマの移行
まず、データベーススキーマをSQL Anywhere形式に移行します。この作業は、SQL Anywhere移行ウィザード(PDF)を使用することで簡単に実行できます。
しかし、より汎用性の高いソリューションを構築するためには、つまり標準のWordPress環境でSQL Anywhereをシームレスに使用できるようにし、このWordPressアプリケーション内で新しいWordPressブログをだれでも作成できるようにするためには、あといくつか作業を行って、ブログ作成機能を有効にしなければなりません。
大きな変更点は、WordPressのwp_install()関数を置き換えることです。SQL Anywhereの場合は、既存のwp_install()関数のクローンを作成し、2つの関数を追加して、wp_installから呼び出します。
function wp_install($blog_title, $user_name, $user_email, $public, $meta=”) {
global $wp_rewrite, $wpdb;
wp_cache_flush();
//Reset schema information
define_sa_schema();
make_db_current_silent();
create_sa_functions();
…
}
define_sa_schema()プロシージャは基本的にグローバル変数$wp_queriesを再定義し、既定のMySQLの構文の代わりにSQL Anywhereの構文を使用してWordPressのスキーマテーブルが作成されるようにします(この関数の完全なリストについては、こちらを参照ください)。
create_sa_functions()プロシージャは、SQL Anywhereの組み込み関数としては存在しないユーザー定義関数をいくつか作成します。SQL Anywhereはこれらの関数の機能をサポートしているため、ここでは、それらの関数を同じ名前のユーザー定義関数として追加し、SQL Anywhereの機能にマッピングしました。
例えば、次のようにします。
function create_sa_functions() {
global $wpdb;
$wpdb->query( ”
IF NOT EXISTS( select * from sysprocedure where proc_name = ‘MD5′ ) THEN
CREATE FUNCTION MD5( str varchar(255) )
RETURNS binary(32)
BEGIN
return HASH( str, ‘MD5′ );
END;
END IF;”);
…
}
この関数の完全なリストは、ここで入手できます。
ここまでの作業を終えると、ブラウザからWordPressのホームページにアクセスし、新しい空のブログを作成できます。
WordPress関連のオススメサイト:WordPress ・ アフィリエイトで稼ぐ