このドキュメントでは最も重要な変更点や目につく変更点を簡潔に説明しています。変更履歴の詳細なリストは、変更詳細履歴をご覧ください。docs/changed-filesには、前回リリース以来変更されたファイルの一覧があります。
Geeklog 2.2.0では主要な新機能が追加されています。
主要な新機能と改善点
- SPAM対策を更新しました。
- Spam-XプラグインにAkismetモジュールを追加しました。
- Invisible reCAPTCHA(見えないreCAPTCHA)をサポートするreCAPTCHAプラグインを追加しました。
- ユーザー保護を更新しました。
- ユーザーのEメールアドレスとパスワードの要件を更新しました。
- 全てのユーザー(Oauthのユーザーを含む)に対してEメールアドレスを要求できるようにしました。
- ユーザーのステータスを新設しました。(Locked, New Email Required, New Password Required)
- 2段階認証を追加しました。
- アカウントに対する無効パスワード入力に関してEメールで警告するようにしました。
- 新規Eメールアドレス・Eメールアドレスの更新の際に、メールアドレスを検証するようにしました。
- Uikit 3フレームワークを導入しました。
- Demin_Threeテーマを追加しました。(Uikit 3をサポートしています)
- CSSファイルとJavaScriptファイルを縮小・結合するようにしました。
- ブロックを右側と左側以外の位置に表示できるようにしました。プラグインとテーマがブロックの表示位置を追加できるようにしました。
- デモモードを追加しました。
- Live Journal認証を廃止しました。
- COM_siteHeader関数とCOM_siteFooter関数を廃止しました。開発者は、代わりにCOM_createHTMLDocument関数を使用してください。
Geeklog 2.1.3では主にバグ修正を行っています。
主要な新機能と改善点
- 多数のバグ修正とセキュリティに関するバグを修正しました。
Geeklog 2.1.2の主要な新機能
Geeklog 2.1.2の主要な新機能には、URLルーティングやモバイルユーザーの検出サポートなどの多数の新たな管理ツールを含んでいます。
GeeklogはPHP 7とMySQL 5.7のデフォルト設定をサポートするようになったため、システム要件が少し変わりました。
システム要件:
- PHP 5.3.3以降
- MySQL 4.1.2以降(MySQL 5推奨)
- Postgresql 9.1.7以降
このバージョンからMicrosoft SQL Server (mssql)をサポートしなくなりました。ProfessionalテーマとProfessional CSSテーマも削除されました。
主要な新機能と改善点
- アンケート(polls)プラグインにdescriptionと複数選択可能な回答を追加しました。(コード提供 Ivy, feature request #629)
- 「関連性のある記事」のセクションを記事のページに追加しました。(コード提供 Andreas, feature request #444)
- 言語オーバーライド機能を追加しました。(feature request #669)
- コメント管理ページを追加しました。(feature request #586)
- インストール・アップグレード成功後に、インストールに使用したファイルを(オプションで)削除するようにしました。(feature request #635)
- public_html/index.phpを疑似フロントコントローラーとして使うことを可能にする URLルーティング機能を追加しました。(feature
requests #211, #326)
- 話題の表示方法を $_CONF['url_rewrite'] で制御するようにしました($_CONF['url_routing'] の設定値とは無関係です)。
- Spam-Xプラグインに新規モジュールを追加しました。(ファイル提供 Dirk Haun, feature request #585)
- 話題ごとに記事テンプレートを変更する機能を追加しました。(コード提供 @hostellerie, feature request #275)
- アンケート(polls)のコメントを検索する機能を追加しました。(feature request #394)
- デフォルトのgravatarアイコンの種類を指定する新しい設定オプション($_CONF['gravatar_identicon'])を追加しました。(bug #579)
- サイト訪問者のデバイスタイプ(mobile か computer)かを検出する機能をGeeklogに追加しました。
特定のデバイスタイプに対してブロックを表示するために使うことができます。
- サイト訪問者のデバイスがモバイル(スマートフォンとタブレット)であると思われる場合、trueを返すテンプレート変数 {device_mobile} を追加しました。
- PEAR の設定を削除しました。PEAR ライブラリーを composer で管理するようにしました。
- 新しい Denim Curve テーマは Denim テーマの子テーマで、Modern Curve テーマの外見を元にしています。
- 外部プログラムを使わずに機能する新しいデータベースバックアップ機能を追加しました。(MySQLのみ)
- インストーラーを改良し、アップグレードの際にメッセージを表示するようにしました。
- COM_switchLocaleSettings は、$_CONF['meta_description'],$_CONF['meta_keywords'], $_CONF['site_name'],
$_CONF['owner_name'], $_CONF['site_slogan']の書き換えをサポートするようになりました。
- UTF-8の4バイト文字セット(utf8mb4_xxx_ci)を使用するMySQLをサポートするようになりました。
- Pear, Uikit, OAuth, jQuery, jQuery UIをはじめとして多数のライブラリーを更新しました。
- 多数のバグ修正とセキュリティに関するバグを修正しました。
Geeklog 2.1.1 の主な新機能はUIkitフレームワークを追加したことです。これは、 "スピーディーで強力なウェブインタフェース開発のための、軽量かつ構造的なフロントエンドフレームワーク"です。
今回のGeeklogのリリースは、jQuery v1.11.3, jQuery UI v1.11.4, CKEditor v4.5.4, UIkit v2.24.0, Filemanager v2.2.0, そして OAuth
class v1.411を同梱しています。
新機能と改善点
- UIkit framework version 2.24.0 を Geeklog本体に追加しました。
- プラグインに、マルチプルテーマテンプレートをサポートしました。
- 多数のバグやセキュリティフィックスを行いました。
Geeklog 2.1.0 では機能アップしたテンプレートライブラリーと新たなアドバンストエディターシステムが追加されました。また、Geeklog 2.0.0にあった階層話題関係のバグを多数対応しました。
今回のGeeklogにはjQuery 1.10.2とjQuery UI to 1.10.3を同梱しています。
新機能と改善点
- Joe Mucchielloによって開発されたGeeklogオリジナルのCaching Template Libraryを追加。
- デフォルトテーマ機能をサポート。
- ブロック、静的ページ、記事に対してCache機能が追加されました。
- 記事の階層構造のCache機能追加による高速化。
- OAuth ログインを追加 (Google, Microsoft, Yahoo)。
- アドバンストエディターを追加しやすいしくみを追加。
- CKEditor 4.3.2がデフォルトのアドバンストエディターに。
- 多言語システムのデバッグ。
- ファイルマネージャーを追加。
注意: Geeklog
2.0.0は話題を異なる方法で管理しています。記事とブロックへの話題の割り当ては、データベースの専用のテーブルに保存するようになりました。これは記事とブロックのテーブルを少し変更したことを意味します。ブロックを直接変更したり、中央ブロックを持ったプラグインはGeeklog
2.0.0と互換性がないかもしれません。アップグレードする前に、インストールしているプラグインに互換性があるかどうか確認してください。もし互換性がなく、それでもアップグレードしたい場合はプラグインを無効にしてください。Geeklog
2.0.0のリリースの後、ほとんどのプラグインの作成者がすぐにGeeklog 2.0.0をサポートするようにプラグインをアップグレードするように期待しています。
また、テーマのエンジンも更新しました。Geeklog 2.0.0では、以前に特定の部分毎にはなく、すべてを一度に生成する新しい関数を導入しています。
この新しい関数を表示に使用するように更新したテーマとプラグインだけが、この新しい機能によるGeeklogとテーマへの恩恵を受けることができます。
このGeeklogはjQuery 1.9.1、jQuery UI 1.10.1とFCKeditor 2.6.9を同梱しています。
新機能と改善点
- パスワードのハッシュ処理の強度を改善しました。
- 話題は子の話題を持てるようになりました。
- 記事、ブロック、他のプラグインのオブジェクトを複数の話題と関係付けられるようになりました。
- 話題はパンくずリストをサポートしました。
- Geeklogのインストールにレスキューツールを含めました。
- MySQLiのサポートを追加しました。
- Spam-Xに掲示板のスパム防止とスパムリンク(数)検証のモジュールを追加しました。
- レスポンシブWEBデザインテーマ Denim を追加しました。
- テーマ Modern Curve を追加しました。
- 記事と同じページでコメントできるようになりました。
このリリースは以下のセキュリティーの問題を修正:
- High-Tech Bridge Security Research Lab が XSSがカレンダープラグインのcalendar_type
parameterに存在することを報告しました(訳註 これに伴い、日本語版ではカレンダーjpプラグインも同様に対策しました。)(HTB23143)。
- Trustwave Spiderlabs は、インストールプログラム、コンフィギュレーション、アンケートプラグインの管理画面、話題の管理画面にXSSが存在することを報告しました。 (TWSL2013-001).
その他の修正:
- Twitter OAuth ログインのTwitter APIをversion 1.1に切り替えました。
Geeklog 1.8.2はメンテナンスリリースで, 主に MySQL 5.5対応とTwitter OAuthログインの不具合対応と若干の修正を行いました。
データベース、テーマ、言語ファイルは何も変更はないのでソースの置き換えだけで大丈夫です。
バグ修正
- MySQL 5.5対応を行いました(upgrade, database backup)。これにより対応するMySQLの最小バージョンはversion 4.1.2となりました。
- Twitter OAuthログインの不具合を修正しました。
Geeklog 1.8.1 はメンテナンスリリースであり、すべてのGeeklog 1.8.0ユーザーに
アップグレードを推奨します。
データベース、テンプレート、言語ファイルに変更はなく(言語によっては
メンテナンスがあります)、アップグレードは簡単です。
今回のGeeklogのjQueryは、1.6.3にアップグレードしています。
バグ修正
- 情報の漏洩を修正:
- "rootdebug"オプションを有効にしているときに、OAuthのコンシューマ・キーとコンシューマー・シークレットも書き出されていました。これからは、変数の書き出しにこれらを含めて表示したい場合はrootdebugのオプションに追加で"force"を設定しなければなりません。
- MS SQLのドライバーは初期状態で詳細なSQLエラーメッセージを表示していました。
- Geeklog 1.8.0では
[code]
と
[raw]
タグがコンテンツを適切に回避できなかった不具合を修正しました。
- コンフィギュレーションで配列に要素の追加と削除で起きていた、いくつかの問題を修正しました。
- 管理者がユーザー管理画面で、エラー発生時も変更内容を失わないようにしました。
- 記事のプレビューで、画像が表示されない不具合を修正しました(記事編集時)。
- プラグインは、
plugin_getFooter()
関数に$_SCRIPTS
が使えるようになりました。
- PHP 5.4の警告に対応しました。
注意: Geeklog 1.8.0はPHP 5.2.0
あるいはそれ以降のバージョンを要求します。わたしたちは一定期間、PHP 4をサポートするGeeklog 1.7.2を提供しますが、PHP 5.2またはそれ以降にできるだけはやく切り替えてください。
詳細は、Geeklogホームページのアナウンスを参照してください。
新機能と改善点
- コンフィギュレーションは、入力チェック機能と検索機能を追加しました。これは
2010 Google Summer of CodeプロジェクトにおけるAkeda Bagusさんの成果です。
- GeeklogサイトにFacebookやTwitter, LinkedInのアカウントを利用してログインできる
OAuthサポート機能を追加しました。これは、Geeklog Japanの
Hiroshi Sakuramoto (Hiroron) さんの開発を元にしています。
- デフォルトテーマにアイコンが追加されました。(taken from the Tango, Gnome, and Humanity
icon themes).
- Geeklogの“公式”JavaScript libraryとしてjQueryを搭載しました。
- 自動タグにパーミッションとディスクリプション機能が追加されました。(tooltip).
- プラグイン管理画面が改造され、プラグインのロード順の設定できます。
また、他のプラグインへの 依存チェックを追加しました。
注意: Geeklog 1.7.2はPHP 4で動作する最後のGeeklogのバージョンです。必要な場合は、このバージョンのセキュリティ修正を2012年まで提供します。新しい機能はGeeklog
1.8.0とそれ以降にだけ追加し、これらの新しいリリースは最低でもPHP 5.2.0が動作に必要です。詳細はgeeklog.netのアナウンスを参照してください。
バグ修正
- PostgreSQLのサポートを修正しました。(Postgresのデータベースを共有する複数のGeeklogのインスタンス、dbSave関数、エラー報告、PHP 4の互換性)
- 記事のIDを変更したときに
[imageX]
タグの置き換えを修正しました。
- 静的ページプラグインのPHP 4の互換性の問題を修正しました。
このリリースは管理者のコンフィギュレーションパネルのXSSを修正しています。このXSSの問題はYGN Ethical Hacker GroupのAung Khant氏から報告がありました。
新機能と改善点
- 静的ページのコンテンツを他の静的ページのテンプレートに設定できるようにしました。
- テーマに対して、ブロックの開始と終了で、独自の表示関数を用意しました。
- テーマの変更点も参照してください。
バグフィックス
- Geeklog 1.7.0において、プラグインへのコメント投稿でタイプエラーがありました。
そのため、該当プラグインのコメントとして認識されませんでした。
- サイトのアドバンストエディターのモードを不可にした場合も、ユーザー毎のモードを残しました。
- マイアカウントの"Show & Hide Boxes"を修正しました。
- ブロック内の中括弧がエスケープされてしまってたとえばJavaScript codeが動作しなくなる問題があり、Geeklog 1.7.0での変更を戻しました。
- 1.7.0 で
COM_refresh()
の際にContent-Type headerを送るようにするとコンフリクトする ので元に戻しました。(例 Forum)
新機能と改善点
- Geeklogは、新たに PostgreSQL データベースをサポートします。この機能は Google Summer of Code 2009で、Stan Palatnik
により開発されました。
- セキュリティートークン (CSRFプロテクション) が期限切れになったとき、ユーザーは再認証できます。
再認証で成功すれば、編集内容を失うことなく操作を継続できます。
- Rootユーザーにだけ選択が許可されていたHTML フィルターのスキップは、アクセス権として独立しました。
- デフォルトグループが追加されました。新規ユーザーは、デフォルトグループに最初から属します。
- プラグインのコメントが、新着ブロックとユーザーのプロファイルに表示できるようになりました。(新しいPlugin API 関数 - プラグインの変更が必要)。
- 認証が必要なページの表示には、ログインフォームが表示されます。
- アドバンストエディターが有効なサイトでは、ユーザーがマイアカウントの設定で有効にするか無効にするか選べるようになりました。
- 記事コピーオプションが追加されました。(静的ページプラグインやカレンダープラグインのように)
- 新しく自動タグ
[user:]
が提供されました。ユーザープロファイルへのリンクができます。
その他の変更
- Security: 自動ログイン機能の辞書攻撃による脆弱性を修正しました。
この是弱性は元々、Nine SituationsグループのBookoo氏から報告されたものです。
- GeeklogのPHPとMySQLのシステム条件は、 PHP 4.4.0
と MySQL 4.0.18に引き上げられました。
- FCKeditor 2.6.6 にアップグレードして同梱しました。
- theme changesも参照してください。
このリリースもまたGoogle Summer of Code 2010の学生たちのたくさんのパッチと開発を含んでいます。ありがとうございます!
このリリースは管理者のコンフィギュレーションパネルのXSSを修正しています。このXSSの問題はYGN Ethical Hacker GroupのAung Khant氏から報告がありました。
このリリースは自動ログイン機能の辞書攻撃による脆弱性を修正しています。この是弱性は元々、Nine SituationsグループのBookoo氏から報告がありました。
新機能と改善点
- メインページ、記事、話題、静的ページ、アンケートに<meta name="description">タグと<meta name="keywords">タグを指定できるようになりました。検索エンジンの中には、これらのメタタグを使用しないものもあります。
- (「該当する話題にのみ表示する」が指定された記事に関しては)話題ごとに注目記事を1つずつ指定できるようになりました。
- 記事の中など自動タグが使用できるところならどこにでもアンケートを埋め込めるようになりました。
- インストールスクリプトの移行オプションを既存のデータベースにも適用できるようになりました(つまり、URLやパスを設定し直すためにダンプしたデータベースを読み込む必要はありません。)。
- データベースバックアップの管理者パネルで、データベースを最適化し、テーブルをInnoDBに変換するオプションがサポートされました(MySQLのみ)。
- タイムゾーンのサポートを改善して、ユーザーは独自のタイムゾーンを実際に設定できるようになりました。
- 小規模なセキュリティの強化:
-
(セッションのクッキーのような)「重要な」クッキーは、今後はHttpOnlyフラグをセットして作成されるようになりました。これにより、このフラグをサポートしたブラウザーで、ある種のXSS(クロスサイト・スクリプティング)攻撃の防止できるでしょう。
- テンプレートのエラーは、そのテンプレートのパスを見せてしまう代わりに、標準のエラーハンドラを呼び出すようになりました。
- Spam-Xのいくつかのクラスのファイルで、直接アクセスする(訳注: 実際に動作していなかった)防止の処理を修正しました。
テーマの変更の一覧も併せてご覧下さい。
バグ修正
- 一定の期日が経過した後で、自動的に記事に対するコメントの受付を終了する機能のバグを修正しました。このバグのためにコメントの受付が終了した記事で再びコメントを受け付けるようにするには、次のSQLコマンドを使用します:
UPDATE gl_stories SET commentcode = 0, comment_expire = 0 WHERE commentcode =
1;
- コメントの投稿間隔制限が無視されていました。
- 他のグループに登録できないというグループ・エディターのバグを修正しました。(この問題はGeeklog 1.6.0にだけ存在しました。)
- 検索におけるいくつかの調整とマイナーな修正を行いました。 (PHP 4コンパチビリティなど)
- Geeklog 1.6.0(新規インストールのみ)では、静的ページプラグインの管理者グループが間違った名前になっていました。.
このリリースでは以下のセキュリティ対策を行いました:
- 不法に任意のファイルをFCKeditorを介してアップロード可能でした。
アップロードされるファイルはFCKeditorのフィルターを通過しなければならないため、スクリプトをアップロードすることは不可能でした。(従って、Geeklogのサイトとしての整合性が壊されるといった危険性はありませんでした。)
しかしながら、マルウェアの置き場として使用されていたという報告がありました。
今回のアップデートではFCKeditorを無効としているか、ゲストユーザーの場合にはアップロードの機能を使用できないようにしました。
また、アーカイブ形式のファイルのアップロードも許可しません。
さらに、FCKeditorを使ってファイルをアップロードするには、何らかの「編集」の権限が必要です。(これは一時的な対応です。将来のGeeklogのバージョンでは「アップロード」という独立した権限を採用する予定です)。
その他の修正:
- InnoDBテーブルを使用してインストールする時の問題を修正しました。
- 記事のコメントコードのフィールドを自動更新するときの(悪用されることのない)SQLエラーを修正しました。
- リンクプラグイン(links)に含まれる間違った関数名を修正しました。
このリリースでは以下のセキュリティ対策を行いました:
- Gerendi Sandor Attila氏から、メール送信および記事を友人にメールで送るメールフォームにXSSが存在すると報告がありました。
- 記事を知人にメールで送信する機能が記事のパーミッションを無視していました。
このため、閲覧できない記事までメールで送信可能でした。
その他:
- 記事投稿キューがOFFな状態で、記事を投稿するときのSQLエラーを修正しました。
- 存在しない
COM_outputMessageAndAbort
関数を呼び出していた問題を修正しました。
Summer of Codeの成果
このリリースには、Google Summer of Code 2008の間に実装されたコードを取り込んでいます:
- サイト移行のサポートとより簡単なプラグインのインストール (開発者: Matt West氏)
- 検索機能の改善 (開発者: Sami Barakat氏)
- コメントの承認と編集の機能 (開発者: Jared Wenerd氏)
その他の変更
- Geeklogは現在PHP 4.3.0以降をサポートしていますが、PHP開発チームは2008年8月にはPHP 4のサポートを終了しています。PHP 4でGeeklogを活用しているユーザーは、できるだけはやくPHP
5へのアップグレードを検討してください。
- FCKeditorを2.6.4.1を同梱しました。
- 新しいプラグイン「XMLSitemap」を同梱しました。このプラグインは、すべての主要な検索エンジンがサポートしているXMLのサイトマップ・ファイルを自動生成します。プラグインはmystral-kk氏※により開発されました。
(※訳者註:Geeklog Japanコア開発者です。)
- いくつかの新しいプラグインAPIの機能が追加されて、既存のプラグインAPIも拡張されてました。
- 他の言語に翻訳できるように、含めているドキュメントの場所をdocs/englishに移動しました。Geeklogの中のドキュメントへのリンクは自動的に、そのときに利用している言語に応じたリンクとなります。(適切な翻訳がみつからなければ、英語のドキュメントを表示します。)
- 新しい機能のサポートとレイアウトの不整合を修正するために、様々なテーマの変更を行いました。
今回のリリースには、Google Summer of Code 2009に参加した学生諸氏のパッチや開発が数多く含まれています。ありがとうございます!
このリリースは自動ログイン機能の辞書攻撃による脆弱性を修正しています。この是弱性は元々、Nine SituationsグループのBookoo氏から報告がありました。
このリリースで以下のセキュリティ対策を行いました:
- Gerendi Sandor Attila氏から、メール送信および記事を友人にメールで送るメールフォームにXSSが存在すると報告がありました。
- 記事を知人にメールで送信する機能が記事のパーミッションを無視していました。
このため、閲覧できない記事までメールで送信可能でした。
Nine Situationsグループの Bookoo氏から、usersettings.php
の古いバグが対象となる、さらに別のSQLインジェクションの脆弱性の報告がありました。前回の問題と同様に、攻撃者は任意のアカウントのパスワードのハッシュ値を取得可能でしたが、このリリースで問題を修正しました。
Nine Situations グループの Bookoo氏から、また別のSQLインジェクションの脆弱性が webservices API
に存在すると報告がありました。前回の問題と同様に、攻撃者は任意のアカウントのパスワードのハッシュ値を取得可能でしたが、このリリースで問題を修正しました。
Nine Situations グループの Bookoo氏から、glFusion に対してSQLインジェクションの脆弱性の報告がありましたが、これに Geeklog
も該当していました。この問題によって、攻撃者は任意のアカウントのパスワードのハッシュ値を取得可能でしたが、このリリースで問題を修正しました。
Fernando Munoz氏から、管理者用問い合わせのフォームにXSSの可能性があると報告がありました。このリリースでは、その問題を修正しました。
バグ修正
- IDが重複した記事のプレビューを行うと、記事内容が失われるバグを修正しました。
- 記事のプレビュー時にタイトルに余分なバックスラッシュ(日本語版では\)が表示されるバグを修正しました。
- トラックバックエディターのテンプレートにセキュリティトークンがないため、きちんと動作していなかったバグを修正しました。
- プレーンテキストで投稿する際に、URLがリンクに変換されない場合がありましたが、このバグを修正しました。
- 話題のパーミッションの変更など、フィードを更新する際に生じる様々な問題に対処しました。
同梱しているプラグインのバグ修正
- カレンダー(Calendar): 個人カレンダーに新規イベントを追加できなかったバグを修正しました。
- リンク(Links): リンクIDを既存のものに変えると、元から存在していたリンクを上書きしてしまうバグを修正しました。
- アンケート(Polls): アンケートIDを変えると、新しいアンケートが作成されるバグを修正しました。また、アンケートの質問にシングルクォートが含まれているとSQLエラーが発生するバグを修正しました。
- 静的ページ(Static Pages): 静的ページを保存するとオーナーが保存を行った人に変わるバグを修正しました。
他のバグ修正
- アップロードされる画像をgdlibを用いて拡大・縮小を行う際の画質を向上させました。
- テーマの変更点はいつも通り、テーマ作成に記述してあります。Geeklog-1.5シリーズの全テーマに適用すべきバグ修正が4箇所(そのうち1つはPollsプラグイン)あります。
Geeklog 1.5.1の大半はバグ修正リリースであり、Geeklog 1.5.0のユーザーにはアップグレードをお勧めします。小さなものですが、いくつか機能追加もあります。
バグ修正
セキュリティ関連
- t0pP8uZzによると、FCKeditor用のアップロードスクリプトを直接呼び出すことで様々なメディアファイル(ただし、実行可能なスクリプトを除く)をアップロードすることが可能になっていました。
- Mark Evansによると、様々なインクルードファイルに施してある直接実行を防止する対策が、Microsoft Windowsなどの大文字・小文字を区別しないファイルシステムでは不十分でした。
- ドラフトフラグをセットしており公開日が未来の記事でも、記事IDを知っていれば、記事を閲覧することが可能になっていました。
- 記事IDを知っていれば、公開されていない記事でもコメントをつけることが可能になっていました。
- データベースのバックアップに失敗したときに、データベースのパスワードがerror.logに記録されないようになりました。
他のバグ修正
- すべての右ブロックが二度レンダリングされていたため、時間のロスになっていただけでなく、ChatterblockやShoutboxなどのアドオンに悪影響を与えていました。
- トラックバックのある記事につけられたコメントを削除できないようにしていた(CSRF対策用)セキュリティトークンの扱いを修正しました。
- ユーザー投稿承認、記事投稿、ドラフト記事リスト、MS SQLサポートに関してバグ修正を行いました。
同梱しているプラグインのバグ修正
- カレンダー: イベント予定のブロックで、当日のイベントの表示を(今度こそ...)修正しました。
- リンク: カテゴリを変更する際に発生するSQLエラーと、IDが重複する場合に新規カテゴリが既存カテゴリを黙って上書きするエラーを修正しました。
- 静的ページ: URLリライトを有効にしている際の印刷用ページを改善しました。
新機能と改善点
- FCKeditor 2.6.3を同梱しました。
- 多言語モードにしている場合に、ブロックも多言語化できるようになりました。
- 記事のカテゴリ用に専用のフィードがある場合、「...を購読する」というオプションを追加しました。
- 記事フィード用に「トップページに表示する記事すべて(All Frontpage Stories)」のオプションを追加しました。「該当する話題にのみ表示」の記事をフィードに含めないようにすることができます。
- コンフィギュレーションにおいて、たとえば誤ってあるオプションを「設定(restore)」した後で、元の状態に戻す(unset)ことができるようになりました。
- コンフィギュレーションで設定した値をsiteconfig.phpで上書きできるようになりました。
$_CONF['rootdebug']
オプションなどを設定するのに役に立つでしょう。
- リモート認証を行うユーザーがWebサービスを利用できるようになりました(ユーザー名として、ユーザー名@サービス名 を使用する必要があります)。
注意: OpenIDユーザーは認証方法に関する技術上の問題のため、Webサービスを利用できません。
- Webサービス(AtomPub)の互換性を高めました。
テーマの変更
1つだけ必須の変更があります: コンフィギュレーションの各項目用テンプレート(admin/config/config_element.thtml)を更新してください(Professionalテーマからコピーしてください)。今回のリリースで変更された他のファイルはすべてオプションです。詳細は、テーマの変更点をご覧ください。
Google Summer of Codeの成果をフィードバック
今回のリリースには、2007 Google Summer of Codeで実装された次のプロジェクトの成果を取り込んでいます。
- 新たな使いやすいインストールスクリプト(作者:Matt West)
- (config.phpを直接編集した従来の方式に代わる)新たな設定用GUI(作者:Aaron Blankstein)
- Atom Publishing ProtocolをベースとしたWebサービスAPI(作者:Ramnath R. Iyer)
上記以外の新機能や改善
- OpenIDサポート: OpenIDを使用したユーザーのログインが可能になりました。Geeklogサイトにアカウントを新規作成しなくても、通常のユーザーと同様の恩恵を受けられます。
- LDAPリモート認証モジュールを追加しました。
- リンク(links)プラグインで階層化されたサブカテゴリを持てるようになりました。
- FCKeditorをversion 2.6にアップグレード
-
記事処理用コードの書き直し。とりわけ、記事に含まれる特殊文字やHTMLエンティティの扱いに関する主要な問題が全て解消するはずです。また、(ブロックレベルの)
[code]
に対して、行レベルの[raw]
タグが新たにサポートされるようになりました。このタグを使うと、HTMLなどのコードをそのまま投稿する際、HTMLタグとして解釈されないようになります。
- コメントを閉じることができるようになりました。つまり、既存のコメントは表示されるが、新規コメントを投稿できないようにできます。
- アンケート(polls)プラグインでアンケートごとに複数の質問をできるようになりました。
- 静的ページ(static pages)プラグインでコメントをサポートするようになりました。
- データベースのバックアップ画面で、バックアップしたファイルを削除したり、ダウンロードできるようになりました。
- デフォルトのProfessionalテーマがHTML 4.01 Strict準拠になりました。また、XHTMLもサポートしています(XHTML準拠のテーマが必要です)。
セキュリティ
新機能
- Microsoft SQL Serverをサポート。今回のリリースより、GeeklogをMicrosoft SQL Serverにインストールできるようになりました。MySQLだけではなくなったのです。MS
SQLサポートはRandy Kolenkoにより開発されました。Randy、ありがとう!
サードパーティによるプラグインがMicrosoft SQL Serverで動作するには、MS SQLをサポートする必要があります。同梱しているプラグイン(カレンダー、リンク、アンケート、Spam-X、静的ページ)は既にMS
SQLをサポートするようアップグレード済みです。
- カレンダープラグイン: 以前は本体に組み込まれていたカレンダーとイベント機能は今回からプラグインとして分離されました。Geeklog 1.4.0で実施されたアンケートとリンク機能に始まるプラグイン化の流れはこれで終了し、Geeklogのモジュール化が進みました。サイトに不要な機能を無効にしたり差し替えることが容易になっています。
- 多言語サポート(Multi-language support):
Geeklogを用いて真の多言語サイトの構築が可能になりました。ナビゲーションだけでなくサイトのコンテンツもまた、言語を切り替えれば追随します。
- FCKeditor 2.3.1を同梱しました。画像をアップロードするファイルマネージャを再び同梱するようにしました。
-
古いないし活動していないユーザーを一括削除する機能を追加。一度もログインしていないユーザーやサイトを短期間しか使用していないユーザー、長期間ログインしていないユーザーが自動的に検索され、一覧表示されます。期間の長さは変えることができ、検索されたユーザーは個別に削除できます。
セキュリティ
Geeklog
1.4.0以前のバージョンで発見されたセキュリティの問題を考慮して、Geeklogのソースコードの見直しを行いました。今回のリリースでは、いくつか些細な問題を発見して対応し、セキュリティを高める対策をいくつか導入しています。嬉しい副作用として、いくつかのバグと不整合が見つかり、今回のリリースでは修正しています。
スパム防御
今回のリリースで、更新されていないMT-Blacklistのサポートを完全に廃止しました。代わりに、Russ
Jonesがwww.linksleeve.orgで運営している Spam Link Verification
(SLV)という手法を採用しています。SLVとは、いわばコミュニティが運営する、自動的に更新されるブラックリストです。詳細は、Spam-Xプラグインをご覧ください。
MustLiveが「友だちに記事をメールする」のフォームを利用したXSSの可能性を指摘しました。今回のリリースではこの問題に対応しています。
今回のリリースでは、Geeklog 1.4.0sr5で導入されたばかりのコメントのプレビューで生じる問題を修正しています。
JPCERT/CCより、コメントの扱いに関するクロスサイト・スクリプティングの可能性に関して通知がありました。今回のリリースではこの問題に対処しています。
"rgod"により、セキュアではない方法でインストールされたGeeklogとFCKeditorに含まれている"mcpuk"ファイルマネージャのバグが、以前の1.4.0系のリリースすべてに含まれていることが報告されました。
-
public_htmlディレクトリの外にあるファイルの一部が直接実行される可能性がありました。これらのファイルがURL経由でアクセス可能なようにGeeklogがインストールされている場合(これは、インストール方法では全然お勧めしていない方法です)、リモートサーバから悪意のあるコードをアップロードして、実行するために利用される可能性がありました。
詳細は、いわゆるGeeklogの脆弱性投稿(So-called Geeklog
"exploit"
posted)をご覧ください。
今回のリリースでは、public_htmlディレクトリの外にあるファイルが直接実行されるのを防ぐ機能を追加しました。とはいえ、public_htmlディレクトリの外にあるファイルがURL経由でアクセス可能なようにGeeklogをインストールしているなら、修正することをお勧めします(詳細は、FAQをご覧くださいdetails)。
-
(Geeklogのconfig.phpでFCKeditorを無効にしていても)、FCKeditorに統合されている"mcpuk"ファイルマネージャを使えば、任意のPHPコードをアップロードすることが可能になっていました。Webサーバの設定しだいでは、アップロードしたコードを実行することも可能でした。
詳細は、FCKeditorのmcpukファイルマネージャの脆弱性(Exploit
for FCKeditor's mcpuk file manager)をご覧ください。
今回のリリースでは、該当ファイルマネージャは取り除かれています。したがって、FCKeditor経由で画像などのファイルをアップロードすることはできなくなっています。Geeklogの将来のバージョンでは、更新されたFCKeditorとファイルマネージャを同梱することになるでしょう。
注: 今回のリリースには、トラックバックスパムを防ぐために更新されたlib-trackback.phpも含まれています。
今回のリリースでは、以下のセキュリティ問題に対応しています。
- auth.inc.phpでのSQLインジェクションと認証迂回の可能性(the Security Science Researchers Institute Of
Iranの報告による)。
- getimage.phpでのクロスサイト・スクリプティングの可能性(the Security Science Researchers Institute Of
Iranの報告による)。
- getimage.phpと、たとえば、Professionalテーマなどのfunctions.phpによるパス漏洩(the
Security Science Researchers Institute Of Iranの報告による)。
- 記事投稿の際のSQLインジェクションの可能性。
今回のリリースでは、以下のセキュリティ問題に対応しました。
- 誰でも任意のユーザーとしてログインが可能になるセッションハンドリングのバグ(Konstantin Dyakoffの報告による)。
- ユーザープロフィールの場所(Location)フィールドでHTMLタグが除去されていなかった。
今回のリリースでは、以下のセキュリティ問題に対応しました。
- Geeklogのクッキーの扱いに起因するいくつかの問題(GulfTech Security ResearchのJames
Bercegayによる報告)。SQLインジェクションや任意ファイルへのアクセス、任意のコードの埋め込み及び実行が可能になる脆弱性でした。
訳注:以下の和訳は、IvySOHOが公開していたGeeklog-1.4.0日本語版に付属するchanges.htmlを修正して使用しています。
(Geeklog 1.4.0 は、元は1.3.12ですので、バージョン1.3.12を参照した場合1.4.0に該当します。)
新機能
- Geeklogは現在公式には
register_globals = off
で動いていますが、まだいくつかのプラグインでは、register_globals = on
にしなくてはいけないことに注意してください。
- トラックバックやピングバックのコメントの送受信向けのサポートが追加されています。それぞれ記事ごとにサポートされていますが、プラグインがこの機能を使えるように新しいプラグインAPIもあります。トラックバックやピングバックはconfig.phpで機能を抑止することが可能です。
- サイトのアップデートを通知するために、ウェブログ・ディレクトリ・サービスblo.gsなど)に更新ピングを送る機能が追加されました。トラックバックやピングバックによって、この機能は記事ごとにサポートされていますが、プラグインもプラグインAIP経由でこの機能を利用することができます。
- Geeklogが読み取りと書き込みができるように、新しいフィード・フレームワークが、RSS1.0だけではなく、複数のフォーマット(現在はRSS、RDF、Atom)でフィードできるようになりました。
- 管理者によるユーザー状態の管理機能追加。アカウントの停止・アクティベーションを含む。
-
Blogger.comやLiveJournal.comなどのような別のサービスのアカウントを持っている利用者が、サイトに直接登録しなくても自動的にログインできる新しい遠隔認証システムが追加されました(リモートアカウントは、通常アカウントとして禁止することもできます。)。
- 管理部分が改訂され、より見やすく分類されたリストとなっています。“コマンドとコントロール” (moderation.php)
も新たなアイコンででき、管理部分ごとにアイコンがあります。さらに、管理ブロック、コマンド、コントロールはアルファベット順に並べ替えできるようになりました。
- FCKeditor(WYSIWYGエディター)が付いています。作動させるには、config.phpの
$_CONF['advanced_editor'] = true
に設定してください。
- 検索では、大きなデータベースを検索する際のタイムアウトを防ぐため、ページごとの検索結果を指定した件数だけ表示するようになりました。
注意:「ページ」検索をサポートするには、プラグインをアップデートする必要があります。アップデートをしないと、Geeklogはプラグイン検索ページの結果を正しく表示しません。プラグインがアップデートされていないと、全データベースを検索することになりますが、Geeklogは現在の検索結果のページしか表示しないことになります。
- 「記事一覧」が導入され、過去の記事を年ごと月ごとに並べ替えて、見やすく表示できるようになりました。
- 新たなオブジェクト(記事、話題、ブロックなど)のデフォルトパーミッションを、config.phpで設定できるようになりました。
互換性
- 変更するには、Geeklog1.4.0で動くようにテーマをアップデートしなくてはいけません。詳細はテーマ変更リストをご参照ください。
- コメント用のプラグインAPIが改変されました。コメントを利用しているプラグインは、Geeklog1.4.0で動くようにアップデートする必要があります。
このリリースは、Geeklog1.3.12用に独自に開発されたセキュリティ強化と、スパム防御を提供しています。また、バグ修正が適切な仕事量で、少数のバグを処理しています。(その他のバグ修正は1.3.12のリリースをお待ちください。)
セキュリティとスパム防御
- ログインの試行には速度制限があり、デフォルトは5分間に3回までの試行です。(config.phpのlogin)で設定可能。
- COM_mailではEメールのTo:、From: Subject:のフィールドに含まれる改行コードを除去します。
- 新しいユーザーアカウントが作成され、ユーザーによる投稿承認がconfig.phpで許可されると、万一アカウントの作成が途中で失敗した場合には、新しいアカウントが適切に承認待ちになることを保証しています。
- メールがスパムと確認されると、速度制限が生じます。(例えば、新たに投稿を行う前に、送信者は速度制限が終了となるのを待つ必要があります。)
- スパムメールは、403“禁止” HTTP結果コードを取得します。
- スパムチェックは、コメント、記事、リンク、イベントの投稿や「友だちに記事を送信する」オプションで送信されたメッセージや、ユーザープロフィールのコンテンツに対して行います。
- Spam-Xプラグイン1.0.2が含まれています。
最近、(Spam-Xで使用されている)MT-Blacklistが中止されたことにご注意ください。本リリースに含まれるSpam-Xプラグインは、geeklog.netからブラックリストの最新バージョンを取得するように設定されていますが、アップデートはされません。
バグ修正
- 記事ページを閲覧する場合、PHP5.0.5以降で送られるエラーメッセージを修正します(bug #483)。
- 空白を除き、アルファベットでない文字を含んでいるときは、すぐにEメールアドレスの名前を引き出します(bug #368)。名前に特別な文字があるユーザーにEメールをするときに役立ちます。
- 日本語やタイ語でのトラブルを修正するバージョン0.2.2に、ksesクラスを組み込んでアップグレードされています。(bugs #94 and #119)
- [staticpage:] 自動タグを使用する時のSQLエラーが修正されています(bug #373)。
バグ修正の全リストは、Changelogを参照ください。
改良点
- custom_usercheck関数 (顧客登録コード)のサポートが追加されています。詳細はlib-custom.phpをご参照ください。
- index.phpの自動アーカイブオプションの操作が改良され、ページのロード時間が少し改善されました。
- アップデートされた新しい言語ファイルがいくつか含まれています。
- アップデートされたPEARクラスが含まれています。
本リリースは、以下のセキュリティ問題に対応しました。
- Stefan Esser が、ユーザーのパスワード・ハッシュのようなユーザーデータを、ある状況で取り出すように開発できるSQLインジェクションを発見しました。
Geeklog 1.3.11
は、Geeklog1.3.10を上回るバグ修正とセキュリティリリースであり、1.3.10に替わるものです。1つのバグ修正が1つのデータベースの変更を伴うので、バージョン番号の変更が必要となりました。
セキュリティ問題
- ゲストユーザーによる投稿がconfig.phpで無効にされていても、ゲストユーザーが記事を投稿することが可能でした。 (Barry Wongの報告)
しかし、config.phpで無効にしていない限り、これらの記事は承認待ちの状態になっていました。
- リンクやイベント投稿のパラメーターがフィルタリングされておらず、SQLインジェクションの可能性がありました。
- 関連ブロック用のリンクが、フィルタリングされていない記事テキストから作成され、クロスサイト・スクリプティング攻撃の可能性がありました。(Vincent Furiaの報告)
バグ修正
- gl_commentsテーブルの‘sid’フィールドの長さが修正されました。20字以上の記事IDを使用することで、コメントメールが記事と取り違えられることを防ぎます。
- PHP 4.1.x (アップデートされた PEARパッケージを含む)との互換性を保証します。
- すばやく起動するアーカイブオプションに修正しています(bug #345)。
- 全話題を削除する場合、コメントや記事画像を的確に削除します(bug #339)。
- アンケートを削除する場合、コメントを削除します。
- カレンダー内のいくつかのバグを修正し、サイトカレンダーとパーソナルカレンダー両方を総合的に処理するように改良します(bug #268, #336, #338,その他)。
- 記事内での "More by author" と "More from topic"のリンクを修正します。
- その他いろいろな修正があります。詳細はdocs/historyをご参照ください。
Geeklog1.3.10のユーザーの方には、1.3.11へできるだけ速やかにアップグレードすることをお勧めします。テーマや言語ファイルあるいは1.3.10以上のconfig.phpでの変更がありませんので、アップグレードは比較的簡単です。
新しいデフォルトテーマ
本リリースには、新しいデフォルトテーマが含まれます。Victor B. Gonzalez ( Aeonservで有名です)によって提供された専門的なテーマを選びました。テーマは少し修正され、現在HTML4.01とCSS準拠となっています。
また、古いテーマ(クラシック、クリーン、デジタル・モノクローム、ゲームサーバ、スムース・ブルー、Xシルバー、ヤフー)の配信を取りやめることに決定しました。それらは別のターボールとして利用できます。
新機能
- Spam-Xプラグインが含まれています。Tom Willetによりスパム検出プラグインが提供され、それはデフォルトでGeeklogの一部としてインストールされます。
プラグインが、データベースにブラックリストを保存するために少し修正されました。プラグインの旧バージョンのユーザーの方は、プラグインの管理パネルを通して各ブラックリストをインポートする必要があります。
- 記事アーカイブ機能: 記事を「アーカイブ」話題に移動するか、所定の時間に自動的に削除することが可能です。
- カスタマイズ・メニュー・バー: サイトのメニューバーは、config.phpで設定できます。例えば、どんなエントリがどんな順番で表示されるかを選択できます。また、lib-custom.phpに関数を入れてカスタム項目を追加することもできます。
- テキスト・メールのクリック可能なリンク: HTML ではないメール内のURLはGeeklogにより認識され、クリック可能のリンクとして表示されます。
- 編集可能記事ID: 記事のID (静的ページのIDのような)は変更でき、読み取り可能なURLにできます。(検索エンジンによって、特にURLの書き換えをして利用する場合、検出されるチャンスがずっと増えます。)
-
自動リンクは記事やコメント内で利用できる新しいフォームのリンクです。自動リンクは名前がタグネームになっていて、IDがリンク先のオブジェクトのIDで、リンクテキストがリンクのテキストとして使われている[name:idlink
text]フォームを取っています。
例: [story:email-bug About the email bug]は<a href="http://example.com/article.php/email-bug">About
the email bug</a>となります。
搭載自動タグに関しては、リンクテキストはオプションで、所定のものがない場合、Geeklogはオブジェクトのタイトル(story, event, static
page)を利用します。
記事にリンクする[story:]とイベントにリンクする[event:]が、あらかじめ定義された自動タグです。プラグインは自分自身の自動タグを定義して、自分のコントロール下でオブジェクトにリンクすることができます。静的ページのプラグインは、すでに[staticpage:]という自動タグを提供しています。
- カスタマイズ可能のEメール:
あなたのサイトに登録しているユーザーに送信されたEメールは、テキストファイル(/path/to/geeklog/data/welcome_email.txt)のテキストを利用することで、完全にカスタマイズできます。
- タイムゾーンハック: 一般的な "タイムゾーンハック"
が含まれています。あなたのサーバが別のタイムゾーンにある場合、サイトのタイムゾーンを設定できます。
その他の改良点
- すべての動作を改善するため、さまざまな変更を行いました。
- 新しいインストール用に、あなたのMySQLバージョンがInnoDBのテーブル現在のMySQL4.0または3.x”Max”で作られている)をサポートしていれば、InnoDBテーブル(MyISAMの代わり)を利用できるオプション機能があります。既存のデータベースは、スクリプト
admin/install/toinnodb.php.を利用してInnoDBに変換できます。
警告:InnoDB
テーブルを使用すると、データベースのバックアップがいくらか複雑になります。小さいサイズや中程度のサイズのサイトは、MyISAMテーブルで十分に作動するので、不安な場合はInnoDBテーブルを使用しないでください。
- カレンダーの週は、日曜日か月曜日から始められます。
- 静的ページのプラグインには、静的ページの印刷用ページを表示するためのオプションがあります。
注釈
- コメントコードは大きく変更されて動作が改善され、個々のコメントやページコメントなどにリンクできるような改良が加えられました。
- ユーザーは、サイトの管理者に対し悪意のあるコメントを報告することができるようになりました。
- サイトの管理者は、新しいコメントが送信された場合、Eメール通知を受け取ることができます。(新しい記事、リンク、イベント、ユーザーに対するEメール通知と同じです。)
- コメント送信者のIPアドレスは記録され、Whoisサービスにリンクして直接見ることができます。(または、Whois機能を備えたTom WilletのNetTools
をインストールすることができます。)
セキュリティ関連の修正
注意:以下のバグはすべてGeeklogのパーミッションシステムのトラブルや、「情報漏洩」の類です。たとえば、ある状況下で、サイトのコンテンツが閲覧できなかった人が閲覧できるようになります。これらのバグを使って、特典を得たり、Geeklogやその運営環境にダメージを与えるようには開発されていません。
- 管理者グループは、そのグループのメンバでなくても、すべてのグループのメンバをリストに可能でした。
- 管理者グループは、そのグループのメンバでなくても、システム内のすべてのグループリストがもらえました(bug #280)。
- 記事およびイベント管理者は、アクセスして読み込まなくても、すべての記事やイベントのリストを常にもらえました。(bug #269)
- ユーザーがその記事を読む許可を持っていなくても(記事とコメントID両方を知っていれば)、その記事からコメントを要求することが可能でした。
- カレンダーの日付と週の画面のイベント許可が適切にチェックされず、イベントが見ることができないはずのユーザーにそのイベントが閲覧可能でした。
- サイトカレンダーの中で閲覧許可がない場合でも(イベントのIDを知っていれば)、パーソナルカレンダーに何らかのイベントを追加することが可能でした。
その他のバグ修正
- 投稿された記事をプレビューしたり保存したりしても、投稿された記事は承認待ちのままでしたが、実際には新しい記事として保存されていました。
- パーソナルカレンダーからのイベント削除が、作動しませんでした(bug #199)。
- 古いユーザーフォトは、フォトが異なったファイル形式の場合移動されました。たとえば、.gifから.jpg へ変わる場合です(bug #228)。
- 画像の高さは最大値を越えるが、幅は最大値を越えない場合、画像のリサイズは作動しませんでした(bug #242)。
- 画像を再リサイズするためにGDライブラリを使用すると、リサイズしていない画像を保存することはできませんでした(bug #197)。
- GDライブラリを使用すると、 GIF画像はPNGフォーマットに変換されましたが、GeeklogはGIFバージョンを表示しようとしていました。 LZW パテントが終了してから、再びGIF画像を使用することが安全となり、PNG変換はなくなりました。
- ターボールにも、ユーザーが抱えているEメールトラブルが報告されている、アップグレードされたPEARパッケージが含まれています(bug #246)。
注意:これらは、Geeklog1.3.9sr2に同梱したのと同じPEARパッケージです。
テーマ変更もあり、その中のいつくかは、新しい機能を動作させるために重要であることにご注意ください。(たとえば、編集可能な記事IDとその記事・アーカイブのオプション)!
本リリースには、Geeklogのコミュニティによって提供された様々な改良点が含まれています。 (確認のためdocsまたはhistoryファイルをご参照ください。)
本リリースは、以下のセキュリティ問題に対応しました。
- ゲストユーザーの投稿がconfig.phpで無効にされていても、投稿することが可能でした(Barry
Wongの報告)。
config.phpで無効にしない限り、これらの記事はまだ承認待ちの状態になっていました。
- リンクやイベント投稿のパラメーターがフィルタリングされておらず、SQLインジェクションの可能性がありました。
本リリースは、以下のセキュリティ問題に対応しました。
- 言語ファイル内の変数$topicを使うことで生じたクロスサイト・スクリプティングの脆弱性が修正されました(bug #293)。
- 記事やアンケートに関するコメントメールの差し止めで、コメント送信が機能停止になりました。
その他の修正
- PHP5で正確に動作するように、lib-plugins.phpが修正されました。
- 完全なターボールには、報告されたEメールトラブルを修正するアップデートされたPEARパッケージも含まれています。
本リリースは、以下のセキュリティ問題に対応しました。
- ゲストユーザーのコメント投稿がconfig.phpで無効になっていても、投稿することができていました。
このバグは、明らかに一定のGeeklogのサイトへ数百のスパムメールを送信するために、スパマーによって開発されたものです。
- コメント投稿をチェックする速度制限が付加されました。
- どの話題もゲストユーザーには見えなかった場合、記事の閲覧許可によっては、サイトのインデックスページがゲストユーザーに対して記事を表示していた可能性があります。
- 話題に関するデイリーダイジェスト・Eメールを、ユーザーがまだ移動した話題から取得していました(bug #178)。
- ユーザーが一定の話題にアクセスしなくても、話題すべてに関するデイリーダイジェストを購読することが可能でした。
- プロフィールを見ているユーザーが、コメントの掲載されている記事にアクセスする許可を持っていなくても、記事に対するコメントが、ユーザーのプロフィールに掲載されることがありました。
その他の修正
- ユーザーが自分のレファレンスから話題を除外した場合のCOM_showTopicsのSQLエラーが修正されました。
- ゲストユーザーに対する仮セッションIDを処理することで生じたerror.logの "Duplicate entry '...' for key 1."のメッセージが修正されました。
- デイリーダイジェストの間違った作者名が修正されました(bug #207)。
- plugin_profileblocksedit_plugin-nameプラグインAPI機能が、usersettings.phpのコードの一部を紛失したため作動しませんでした。
COM_extractLinksは、"href" を含まないアンカータグを無視することになります(bug #183)。
新機能
- Geeklogは、すべてのEメールを送信するため、PEAR::Mailを使用しています。それにより、PHPの搭載メール機能(前述)やsendmail、SMTPを介してEメールを送信することができます。
- RSSフィードを作成したり設定したりするContent
Syndicationという新しい管理オプションがあります。新たな記事をすべて含んでいる標準フィードに加え、話題ごとや次のイベント用、リンク用のフィードを作成することができます。
この機能は、プラグインがフィードを追加できることで拡張可能です。フィードクラスを追加することで、RSS0.91以外のフォーマットでフィードを提供することも可能です。
- 管理者は、ブロックのリストからブロックの順番を簡単に変更することができます。
- グループにユーザーを追加する代わりとなるインターフェースがあります(JavaScriptが必要です)。
- 管理者グループのユーザーは、自分自身がメンバになっているグループに他のユーザーを割り当てることだけできます。
- 画像のアップロードも、画像をリサイズするためにGDライブラリを使うことができます。
- コメントはテンプレートを使用します。
- ファイルのアップロードを許さない厳しいウェブホストを、標準の画像ディレクトリに適応させるために、新しい設定用変数
$_CONF['path_images']
を設定して、記事画像とユーザープロフィールが保存されるウェブツリー外部のディレクトリに進むことができます。
- Geeklogは、記事のURL用のURLリライトをサポートしています。たとえば、Googleのクローラーが訪問しやすい
https://www.geeklog.net/article.php/20031229225326631
のようなURLを持つことができます。
- プラグインは、Geeklogの新しいブロックに独自のセクションを追加できます。
- すべてのURLフィールドは、255文字まで保存ができます(テーマのアップデートが必要です)。
テーマ変更の完全なリストは、テーマの説明をご参照ください。
静的ページプラグイン1.4も他の改良点に含まれており、PHPのreturn文を使わずに、静的ページにPHPを組み込む追加のオプション機能があります。
バグ修正
- 検索クエリからの文字は、コメント内でハイライトされています。また、検索クエリが'*' 文字を含む時は、ハイライトすることで問題を修正しました。
- 検索クラスでのさまざまな修正
- 空のユーザー名でユーザーが登録できるバグが修正されました。
- ユーザーを一括インポートしている時、そのユーザーはみな自動的にデイリーダイジェストを購読していました。(代わりに
$_CONF['emailstoriesperdefault']
の設定を使います。)
- Rootグループ(たとえば管理者)のユーザーが以前利用できたコメント削除のオプション機能が修正されました。実際の記事に対して記事編集許可を持っているユーザーは、コメントを削除できます。
- グループの削除は、 group_assignments テーブルに孤立した項目が残る場合があります(これは現在修正されました)。
1.3.9にアップグレードする場合、インストールのスクリプトは、データベースから孤立した項目を移動することになります。
セキュリティ、特にSQLインジェクションに対するセキュリティを改善するために多くの変更がありました。
本リリースは、以下のセキュリティ問題に対応しました。
- 言語ファイル内の変数$topicを使うことで生じたクロスサイト・スクリプティングの脆弱性が修正されました(bug #293)。
- 記事やアンケートに関するコメントの差し止めで、コメントの送信が機能停止になりました。
本リリースは、以下のセキュリティ問題に対応しました。
- ゲストユーザーのコメント投稿がconfig.phpで無効にされていても、コメント投稿が可能でした。
このバグは、明らかに一定のGeeklogのサイトへ数百のスパムメールを送信するために、スパマーによって開発されたものです。
本リリースは、以下のセキュリティ問題に対応しました。
- 管理者グループのユーザーやユーザー管理者グループが、Rootグループのメンバになることが可能でした(Samuel M. Stoneの報告、bug #135)。
- あるエリアの管理者になると(記事に関する記事管理者など)、ユーザーがそこにアクセスを許可されていなくても、オブジェクトのIDを知っていれば、そのエリア内(記事など)のすべてのオブジェクトを削除することが可能でした。
- イベントIDを知っていれば、他の人のパーソナルイベントを削除することが可能でした。
- ユーザーが実際の記事にアクセスしなくても、記事のコメントを見ることが可能でした(Peter Roozemaalの報告)。
- クロスサイト・スクリプティング問題のために、誰かのアカウント設定を取得して、特に巧妙に作られたリンクをクリックした場合、その設定(パスワードを含む)を変更することが可能でした。 (Jelmerの報告、Vincent
Furiaにより提案された修正)
- SQLのインジェクションの可能性から、コメント表示に障害が起きました(Jelmerの報告)。
- カレンダーにJavascriptコードを入れることが可能でした(Jelmerの報告)。
- コメントプレビューのJavascriptコードを実行することが可能でした(Jelmerの報告)。
本リリースは、以下のセキュリティ関連の問題に対応しました。
-
指摘されている"dr.wh0"のように、リンク投稿用のカテゴリ・フィールドは、まったくフィルタリングされていませんでした。32文字で多くの障害を生じさせることはおそらくできませんが、現在これは修正されました。
- Vincent
Furiaが、ユーザー向けのEメールのフォームに対する制約を回避することができ、その制約をスパムユーザーに使用することもできることを発見しました。これらの問題の修正に加え、そのフォームには速度制限もあります。(記事投稿の速度制限に対するデフォルト)
- ゲストユーザーのコメント送信が停止された場合でも、送信する方法がありました。
- ほかの誰かのユーザー名でコメントを送信することが可能でした。
Jouko Pynnonen
が、1.3.8で導入した新たな「パスワード再発行」の機能を使って、攻撃者がアカウントのパスワードを変えてしまう方法を発見しました。このリリースは、この問題に対応しました。その他の変更はありませんでした。
できるだけ早くアップグレードすることをお勧めします。
本リリースの掲載目的は、2003年の9月と10月初旬に報告されたセキュリティ問題に対応することです。本バージョンにアップグレードすることを強くお勧めします。
セキュリティ問題
- Ulf Harnhammar's kses
HTMLフィルターを組み込むことにより、このリリースは種々の実行可能なJavascriptインジェクションとCSSの改変問題に対応しています。
- SQLエラーの詳細は、ブラウザーではこれ以上報告されることはありません。(Geeklogの error.logファイルだけで報告されます。)
これは、エラーメッセージ(報告されたSQLインジェクション問題でわかったトラブルに限り)の一部として重要な情報が漏洩することを防ぐものです。
現在はMySQL4.1でGeeklogを使用することを推奨していないことにご注意ください。(これが書かれた時点では、アルファリリース段階で実際に稼働しているサイト上では使用されていません。)Geeklogの次のリリースには、SQLインジェクションをより完全にフィルタリングする機能がつき、MySQL4.1でのトラブルを修正します。
その他の修正
- URLにポート番号(example.com:8080など)が含まれていた場合、変数
$_CONF['cookiedomain']
の値の自動検索が修正されました。これで、一部のユーザーが報告していたログインのトラブルが修正されます。
- 1.3.8-1sr1の完全なターボールにも、アップデートされたフランス語(カナダ)やトルコ語のファイルが含まれます。
Geeklog 1.3.8-1は、Geeklog1.3.8に対するバグ修正のリリースです。さまざまな(ほとんどマイナーな)バグ修正が含まれています。それらの問題は、どれもセキュリティに関連していません。
バグ修正
- 以前の1.3.8の動作(検索結果が戻ってこない場合、
$_CONF['searchloginrequired']
を使ってもう一度検索フォームを表示するなど)を復活させる新しい検索機能に修正します。また日付による検索を修正しました。
- MySQLバージョンの確認を試みた場合の、インストールスクリプトの問題は修正されました。インストールスクリプトは、PHP-4.0.4以前のバージョンでは作動しませんでした。
- 画像を含む記事の関連ブロックのトラブルは修正されました。
- デイリーダイジェストを送信するとき、ゲストユーザーを対象から外すようにしました。
- 管理者がユーザーのEメールアドレスを変更する際、別のユーザーがすでに使用しているアドレスと重複しないようにしました。
- 記事を削除するときは、RSSフィードと古い記事ブロックをアップデートするようにしました。
1.3.8-1の完全なターボールにも、新しくアップデートされた言語ファイルが含まれます。(詳細はChangelogをご参照ください。)
新機能
Geeklog 1.3.8には、静的ページ1.1と1.2のプラグインの両方に替わる静的ページ1.3プラグインが含まれています。詳細については静的ページの説明をご覧ください。
- 検索機能が更新されました。ページやすべての言葉、クエリからのどんな言葉も適切に検索できます。検索する言葉は記事の中でハイライトされます。
- 新たなプライバシー・オプション: ユーザーは、他のユーザーや管理者からのEメールを受け取るかどうか、オンラインブロックに自分の名前を出すかどうかを決めることができます。
- あるグループにいるすべてのユーザーのリストを取得することができます(管理者グループのエディターから)。
-
リサイズが記事の画像用に設定されている場合、リサイズされていない画像を保管できます(最初にconfig.phpで設定されていなければいけません。)。そのような場合、記事の中のリサイズした画像は小さくなって、オリジナルの画像にリンクされます。
- ある話題をデフォルトの話題にできます。記事の投稿フォームでの話題選択で、その話題がデフォルトになります。しかし、話題 (index.php?topic=Geeklog
など)で閲覧する場合、新しい記事の投稿は、現在の話題がデフォルトになります。
- ユーザーにユーザー名を変更させたり、アカウントを削除させたりすることができます。両方の機能ともにconfig.phpで有効にする必要があります。
- 拡張プラグインAPI: プラグインは、Geeklogのセンターブロックのコンテンツを表示することができ、ユーザーのプロフィールにプラグイン自身の情報を追加でき、またサイトのヘッダー(<head>セクション)に情報を追加することもできます。
- カスタム登録フォーム用に新しいAPIがあります (サンプルコードはlib-custom.phpをご参照ください。)。
- ハードコードされたHTMLの大部分をテンプレートファイルに移動し、テーマデザイナーにレイアウトの管理をさせるために、少しテーマの変更がありました。変更リストはテーマの説明をご覧ください。
バグ修正
-
「パスワード再設定」機能がリライトされました。古いパスワードをリセットして新しいパスワードを送信する代わりに、特定のリンクを含むEメールを受信します。このリンクに従えば、直接新しいパスワードを登録することができます。登録しない場合は、単にそのEメールを無視することができ、古いパスワードが有効のままとなります。
- 話題のアクセスが必ずしも適切にチェックされてはいませんでした。記事の管理者が、1.3.8にアップグレードした後で定義されたメッセージにアクセスしたことを伝えてきたら、あなたの話題パーミッションを注意してチェックしてください。
-
アンケートエディターで、回答を1回余計に入力できていました(たとえば、回答の最大回数が10回に設定されている場合、実際には11回入力可能でした。)。アンケートをチェックしてください。アンケート回答の最大回数を超えていたら、最後の回答が無効になっているかもしれません。
(必要に応じて、
$_CONF['maxanswers']
としてください。)
- Geeklogは、MySQLの古いバージョン(特に3.22.xx)でインストールして再び動作するようになりました。これらの古いバージョンは、MySQL
ABでサポートできないものもあり、3.23.54より古いものをインストールしているMySQLには、セキュリティ問題があることにご注意ください。
本リリースは、以下のセキュリティ問題に対応しました。
- 管理者グループのユーザーとユーザー管理グループが、Rootグループのメンバになることが可能でした。 (Samuel M. Stoneの報告 bug #135)
- ユーザーが記事にアクセスすることが許されていなくても、オブジェクトのIDを知っていれば、あるエリア(たとえば、記事の記事管理者)の管理者になることで、そのエリアのすべてのオブジェクト(たとえば、記事)を削除可能でした。
- イベントIDを知っていれば、他の人のパーソナルイベントを削除することが可能でした。
- ユーザーが実際の記事にアクセスしなくても、記事のコメントを閲覧することが可能でした。(Peter Roozemaalの報告)
- クロスサイト・スクリプティング問題のために、誰かのアカウント設定を取得して、特に巧妙に作られたリンクをクリックした場合、その設定(パスワードを含む)を変更することが可能でした。 (Jelmerの報告、Vincent
Furiaにより提案された修正)
- SQLインジェクションの可能性から、コメント表示に障害が起きました。 (Jelmerの報告)
- カレンダーにJavascriptコードを不正に挿入することが可能でした (Jelmerの報告)。
- コメントプレビューのJavascriptコードを実行可能でした。(保存はできない。)(Jelmerの報告)
本リリースは、以下のセキュリティ関連の問題に対応しました。
-
指摘されている"dr.wh0"のように、リンク投稿用のカテゴリ・フィールドは、まったくフィルタリングされていませんでした。32文字で多くの障害を生じさせることはおそらくできませんが、現在これは修正されました。
- Vincent Furia が、ユーザー向けのEメールのフォームに対する制約を回避することができ、その制約をスパムユーザーに使用することもできることを発見しました。
- ゲストユーザーのコメント送信が停止された場合でも、送信できる方法がありました。
- ほかの誰かのユーザー名でコメントを送ることが可能でした。
本リリースの目的は、2003年の9月と10月初旬に報告されたセキュリティ問題を対応することです。Geeklogの最新バージョン(これが書かれている時点で、1.3.8-1sr1)にアップグレードする予定がない方には、代わりに少なくとも1.3.7sr3にアップグレードすることをお勧めします。
セキュリティ問題
- Ulf Harnhammar's kses
HTMLフィルターを組み込むことにより、このリリースは種々の実行可能なJavascriptのインジェクションとCSSの改変問題に対応しています。
- SQLエラーの詳細はブラウザーではこれ以上報告されることはありません(Geeklogの error.log
ファイルだけで報告されます。)。これは、エラーメッセージ(報告されたSQLインジェクション問題でわかったトラブルに限り)の一部として重要な情報の漏洩を防ぐものです。
現在はMySQL4.1でGeeklogを使用することを推奨していないことにご注意ください(これが書かれた時点では、アルファリリース段階で実際に運用されているサイト上では使用されていません。)。Geeklogの次のリリースには、SQLインジェクションをより完全にフィルタリングする機能がつき、MySQL4.1でトラブルを修正します。
セキュリティ問題
本リリースの目的は、以下のセキュリティ問題を修正することです。すべてのユーザーには、本バージョンにできるだけ速やかにアップグレードすることを強くお勧めします。
- 管理者アカウントを含め、Geeklogサイトのアカウントごとに有効なセッションIDを取得することが可能でした。 (SCANアソシエイツの報告)
- Internet Explorerを使うと、埋め込まれたPHPコードで画像をアップロードでき、実行することが可能でした。 (SCAN アソシエイツの報告)
- 記事のパーミッションが話題のパーミッションを無効にしてしまい、アクセスできなかったユーザーに記事を表示する結果となりました(Andrew
Lawlorの報告)。これは2003年5月15日にリリースされた新しいindex.phpで既に修正されました。
- 以下のタグのいずれかを許可されたHTMLのリストに追加すると、サイトがスクリプトの攻撃を受けやすくなってしまうという警告がconfig.phpに追加されました。
<img> <span>
<marquee>
<script> <embed> <object> <iframe>
(Joat Dedeの指摘)
このアップデートには、ユーザーが管理エリアで見る「アクセスが拒否されました」というよく見られるエラーメッセージに対する修正が含まれています。(たとえば、記事を保存しようとしたり、記事管理者許可のあるユーザー「のみ」とする場合)
1.3.7sr2の完全なターボールにも、アップデートされた種々の新しい言語ファイルが含まれています(詳細はChangelogをご参照ください。)。
セキュリティ問題
本リリースの主な目的は、以下のセキュリティ問題を修正することです。ユーザーの方には、本バージョンにアップグレードすることを強く推奨いたします。
- Javascriptコードをユーザーのプロフィールのホームページ面に埋め込むことが可能でした。 (Jin Yean Tanの報告)
- Javascriptコードを、クロスサイト・スクリプティング攻撃で使用するために、一定のURLに埋め込むことが可能でした。(Jin Yean Tanの報告)
- コメントID(通常は見えません)を知っていれば、コメントを誰かが削除することが可能でした。
- 記事にアクセスしなくても(たとえば、あるグループのメンバでない場合)、記事管理者が記事を操作可能でした。イベント、リンク、アンケート、話題、ブロックの管理者にも同じことが可能でした(Kobazの報告)。
その他のバグ修正
- index.phpで、リダイレクトが無限ループになる可能性を修正しました。
$HTTP_SERVER_VARS['HTTP_HOST']
が設定されていなければ、リダイレクトを起こしません。また、設定と実際のサーバネームを比較すれば、もう不安定な状態にはなりません。
- ImageMagickを使用する時に、リサイズする画像を修正しました。
- 「ユーザー」が、
$_CONF['notification']
に登録されていなくても、新しいユーザー通知Eメール(Geeklog1.3.7で導入されている)が常に送信されました。
- 管理メニューは、管理機能のコアの一部ではなくプラグインのみに対して管理者アクセスしているユーザーに表示されています。
- デイリーダイジェスト用のデフォルトは、
off
に戻ります。たとえば、新しいユーザーは自動的にダイジェストを受け取りません。新しいユーザー向けのデイリーダイジェストを再び可能にするには、config.phpに $_CONF['emailstoriesperdefault']
= 1
を設定してください。
ドキュメント及びハードコードされたリンク(バージョンチェック、サイトのフッターのGeeklogへのリンク)は、https://www.geeklog.net/ へ行くようにアップデートされました。
新機能
- 通知Eメールは、新しい記事、リンク、あるいはイベントが掲載されたか、新しいユーザーがそのサイトに登録したときに送信されます(詳細は投稿の設定をご参照ください。)。
この機能がGeeklogのセキュリティ機能と一緒にはなっていないことにご注意ください。多くの方からこの機能性が望まれたので、本当にハック以上のものでした。
- 新着ブロックの「過去24時間の記事」をクリックすると、新しい記事が表示されます。
- ユーザーの写真は、記事の画像と同じくリサイズされています(画像ライブラリの使用が設定されている場合)。ユーザーの写真の最大サイズは、config.phpの別々の設定変数で設定できます。
- プラグインメニューは、ファイルシステムに存在するがまだインストールしていないプラグインすべてを表示しています。また、容易にインストールできるように、それらのプラグインのインストールスクリプトへのリンクも提供しています。
- いくつかの新しい設定変数が、config.phpに追加されました。(
notification, showfirstasfeatured, dateonly, timeonly, skip_preview,
upcomingeventsrange, emailstoryloginrequired, hideemailicon, hideprintericon, hidenewstories, hidenewcomments,
hidenewlinks, max_photo_width, max_photo_height, max_photo_size
). 詳細はconfigの説明をご参照ください。
- テーマ変更: 変更リストはテーマの説明をご参照ください。
バグ修正
- 不完全な言語ファイルを使った場合(あるいはURLを利用した場合)に、すべての記事を消去させないように、管理者記事エディターにしっかりしたチェックを加えました。
- UserAdminパーミッションを持つユーザーに、Rootユーザーのパスワードを変更させ、実際にRootになるlib-security.phpの危険なバグを修正しました。
- "homeonly"と設定されるとブロックが消えるトラブルを修正しました。
- 記事とコメントの複数の [code] ... [/code]部分のトラブルを修正しました。
- [code]部分とPHP4.2.0以上のHTMLフォーマットのコメントでの2行スペーシングを修正しました。
- Geeklogで送信されたEメールのスラッシュ'/'とHTMLエンティティのトラブルを修正しました。
- プラグインAPIへの修正と改良を行いました。
寄稿者: Blaine Lang, Vincent Furia, 及びKenn Osborneが本リリースに寄稿いたしました。
Geeklogのスピードアップ (少しだけ)
1.3.6以前の古いバージョンからアップグレードする場合、installディレクトリにあるaddindex.phpと呼ばれるスクリプトを実行する必要が出てくるかもしれません。このスクリプトは、Geeklogのデータベーステーブルのいくつかにインデックスフィールドを付加し、アクセス時間全体を少し改善します。
データベースにどれくらいのユーザーや記事などがあるかによって、実行時間がかかるかもしれないので、これは別々のスクリプト(インストールスクリプトのアップグレード処理の一部ではなく)として実行されました。たとえば、ホスティングサービスがPHPスクリプトの実行時間に制限を与えている場合、タイムアウトになる人がいるかもしれません。そういうことになっても、慌てないでください。どのテーブルにもフィールドが追加されませんでしたと通知されるまで、何度もそのスクリプトを実行してください。
(何度も何度も ...)
Geeklog1.3.7を新しくインストールすれば、このスクリプトを実行する必要がないことにご注意ください。新たにインストールしている間に生成されたデータベースには、すでに新しいインデックスフィールドがあります。
新機能
- 記事の画像は、アップロード中に自動的にリサイズできます(ImageMagickかnetpbmのどちらかがインストールされている場合)。詳細については、コンフィギュレーションの説明をご参照ください。
- "Frontpage" というタイトルの静的ページのコンテンツは、Geeklogサイトでフロントページ上の最初の記事の前に表示されます。静的ページがさらに”nonews”ラベルをつけている場合は、完全にフロントページのニュースを入れ替えることになります。
- ユーザーによる投稿を承認する: 有効な場合(config.phpで)、新しいユーザーは自分のパスワードを受け取る前に、管理者によって承認される必要があります。
- 投稿承認は別々に、完全に(config.phpで)かまたは一定のユーザーグループのみで取り消すことができます(新しい機能
story.submit、links.submit、 event.submitを使って)。
- ソースコード(PHP、HTMLなど)を送信すると、[code] ... [/code]という擬似タグを使って、一字一句変えずに再生された送信文を封入できます。
- リンクセクションでは、分類、ページ分けされたディスプレイ(別々にオフできて、以前の1.3.6スタイルのリスティングにも戻れます。)が使われています。
- 必要ならば、ゲストユーザーをサイトのほとんどすべての部分(たとえば、リンクセクション、サイト統計)から締め出すことができます。
- Geeklogサイトは、config.phpにフラグを設定して簡単に機能停止することができます。(たとえばメンテナンスの場合など)
- テーマ変更: 変更リストはテーマの説明をご参照ください。
バグ修正
- いくつかの修正で、アカウントに対するパーミッションが適切に設定されることが保証されました(たとえば、ユーザーがアクセス権を持たない記事のタイトルを表示しない。)。
- Geeklogを適切にローカライズできるように、いくつか修正を行いました。(最新の言語ファイルを持っていて、国と言語に適したローカル設定を選択した場合。)
- 変数
$_CONF['site_admin_url']
を、Geeklogの管理ディレクトリをリネームすることができるように、適切に使用しています。
- 新しい RDFパーサは、(全部ではないにせよ)ほとんどのRDFニュースフィードを適切にインポートします。
注意
- config.phpには新しい変数がたくさんあるので、前回のインストールから古いconfig.phpをコピーする代わりに、そのファイルを新たにコピーすることをお勧めします。
- 英語、ドイツ語、イタリア語、ポーランド語、日本語のファイルが、最近アップデートされたことにご注意ください。その他の言語ファイルを使用すると、あなたのGeeklogサイトがきちんと動かない場合があります。
寄稿者: Gene Wood、 Blaine Lang、 Tom Willet、及び Roger Websterが本リリースに寄稿いたしました。