WP Multibyte Patch 2.8

WP Multibyte Patch 2.8 をリリースしました。

2.8 の主な変更点

  • フィード XML サニタイズ機能を追加しました。

新機能「フィード XML サニタイズ」について

WordPress がフィードで出力する XML 1.0 では、使用可能な文字が厳密に定義されているため、仕様上不正となる文字をフィードが含んでいる場合は、検証時にエラーとなります。この問題を防止するため、WP Multibyte Patch 2.8 では、記事フィードとコメントフィードから XML 不正文字を除去し、破損したマルチバイト文字の無害化を行う機能を新たに追加しました。

なお、XML 不正文字が混入するケースは、外部エディター等からのコピーペースト作業が多いなどの一部のユーザー環境の方に限られると思われることから、本機能はデフォルトではオフになっております。ご利用の際は wpmp-config.php を以下のように編集して有効化してください。

$wpmp_conf['patch_sanitize_feed_xml_text'] = false;

$wpmp_conf['patch_sanitize_feed_xml_text'] = true;

WP Multibyte Patch 2.8 のダウンロードと詳しい説明

WordPress 4.6.1 でメディアタイトルがエンコードされる問題の修正方法

WordPress 4.6.1 環境において、日本語等マルチバイト文字を含んだ名前のファイルがアップロードされた際に、メディア情報のタイトルが URL エンコードされてしまう問題(日本語.jpg の場合 %e6%97%a5%e6%9c%ac%e8%aa%9e となる)が報告されています。以下にその修正方法を示します。

修正方法1

パッチ適用済みファイルをダウンロードして、既存の wp-admin/includes/media.php と置き換える。

修正方法2

wp-admin/includes/media.php をエディターで開き、293 行目、
$title = sanitize_title( $name );

$title = sanitize_text_field( $name );
に修正し保存する。

注意事項

  • 修正作業は、自己責任にて行ってください。事前にバックアップを取ることをおすすめします。
  • 上記修正方法は、WordPress 4.6.1 に対してのものであり、他のバージョンには行わないでください。
  • 本問題は、次にリリースされる WordPress のバージョンでは修正されている予定です。

WP Multibyte Patch 2.7

WP Multibyte Patch 2.7 をリリースしました。

2.7 の主な変更点

  • 投稿エディタのリンク挿入機能(wplink.js) の WordPress 4.6 向け互換性修正。
  • wp_mail()Reply-To ヘッダ問題修正に伴う互換性修正。

WordPress 4.6 へ更新を行う方へ

本バージョンには投稿エディタのリンク挿入機能に関連する wplink.js の重要な互換性の修正が含まれています。WordPress 4.6 へ更新を行う場合は、必ず WP Multibyte Patch 2.7 の更新もあわせて行ってください。

WP Multibyte Patch 2.7 のダウンロードと詳しい説明

WP Multibyte Patch 2.6

WP Multibyte Patch 2.6 をリリースしました。

2.6 の主な変更点

  • 投稿エディタのリンク挿入機能(wplink.js) の WordPress 4.5 向け互換性修正。

WordPress 4.5 へ更新を行う方へ

本バージョンには投稿エディタのリンク挿入機能に関連する wplink.js の重要な互換性の修正が含まれています。WordPress 4.5 へ更新を行う場合は、必ず WP Multibyte Patch 2.6 の更新もあわせて行ってください。

WP Multibyte Patch 2.6 のダウンロードと詳しい説明

WordPress で外部から来る変数を扱う時の注意点

不要なバックスラッシュを除去する

WordPress で $_GET、$_POST、$_REQUEST、$_COOKIE、$_SERVER といった PHP のスーパーグローバルの値を扱う時は、まず wp_unslash()を使用して不要なバックスラッシュを取り除いてやる必要があります。これは WordPress 内部において PHP のマジッククオートと同等の処理が行われているためです。

$data = wp_unslash( $_GET['data'] );

データを無害化 (サニタイズ) する

外部からやって来るデータにはシステムやユーザーに害を与える危険なものも含まれています。データの種類・文脈 (コンテキスト) に応じて適切な無害化 (サニタイズ) 処理を行ってください。

以下にサニタイズ処理の例を示します。

たとえば、利用されるデータの型が予め整数に決まっている場合は PHP の型キャストを使って入力データを強制的に整数に変換しておくことができます。

if ( isset( $_GET['id'] ) )
  $id = (int) wp_unslash( $_GET['id'] );
else
  $id = 0;

入力データを文字列としてページに出力する場合は esc_html() 等を使って不正な HTML を無害化します。

if ( isset( $_GET['text'] ) )
  $text = esc_html( wp_unslash( $_GET['text'] ) );
else
  $text = '';

WordPress のサニタイズ関数

WordPress には用途に応じた様々なサニタイズ関数が用意されています。これらは安全なコードを書くうえで不可欠なものですので、一度目を通しておくことをおすすめします。