はてなブックマークを見ていたら、文字コードに起因する脆弱性を防ぐ「やや安全な」php.ini設定 というエントリを見つけた。
全て PHP で実装され、かつ日本語版は UTF-8 がデフォルトの文字コードになっているWordpress にも効果的と思い早速導入してみることにした。
エントリーはphp.iniの設定追加(変更)を前提に書かれているが、共有ホスティングの場合は、php.iniがいじれない。そこで、.htaccess に php_value/php_flag ディレクティブを指定することで、自分のwebサイトに対して、カスタムの php オプションを指定することができる機能を利用する。実際にどのように書き換えるか、簡単ではあるが役に立つかもしれないので、エントリしておく。
「.htaccess」ファイルでの設定を参考にさせてもらいながら、php.ini の書式を.htaccess 用に変更する。On/Off で設定するものについては、php_flag ディレクティブを、それ以外は、php_value ディレクティブを使用する。また、値の指定に「=」は使用しないので、空白にする。
自分が使っている、.htaccess に以下のエントリを追加。
  
 #出力バッファリングを無効にする
 php_flag output_buffering Off
 #HTTPレスポンスの文字エンコーディングを設定
 php_value default_charset UTF-8
 #デフォルトの言語を日本語にする
 php_value mbstring.language Japanese
 #HTTP 入力変換を有効にする
 php_flag mbstring.encoding_translation On
 #HTTP 入力エンコーディング変換を UTF-8 に設定(UTF-8→UTF-8の変換)
 php_value mbstring.http_input UTF-8
 #HTTPレスポンスは変換しない
 php_value mbstring.http_output pass
 #内部エンコーディングを UTF-8 に設定
 php_value mbstring.internal_encoding UTF-8
 #無効な文字は「?」に
 php_value mbstring.substitute_character “?”
(※元の設定項目・コメントは徳丸浩さんの文字コードに起因する脆弱性を防ぐ「やや安全な」php.ini設定 そのままです。これを .htaccess で使えるように変更したものになります。設定の詳細についてはこちらのサイトをご参照下さい。)
これを、自分の web サイトのドキュメントルートにアップロードすれば完了する。念のため、表示が正しいかどうか、確認しておいた方が良いでしょう。