php_flag register_globals Off and Movable Type 3.11, 3.12
Xrea.com さんのサーバーでは、PHP設定( php.ini ) register_globals On となっています。
Movable Type 3.11-ja では、スーパーグローバル変数 のみ使用しています。
.htaccess 内に下記の1行を追記し、セキュリティ上ハイリスクであるグローバル変数の使用を無効とします。
php_flag register_globals Off
以下は簡単な解説です。
現在でも、EGPCS (Environment, GET, POST, Cookie, Server) 変数をグローバル変数として指定しないと作動しないサーバアプリケーションソフト (旧バージョンなど) がありますので、Xrea.com さんのサーバーなどでは、PHP設定ファイル php.ini にて、
register_globals On
と、デフォルト Off (PHP 4.2.0以降) から On へ変更されています。これらの旧プログラムソフトをデフォルトの設定 register_globals Off のサーバ上で使用すると、ブラウザでアクセスしたとき、
FATAL ERROR: register_globals is disabled in php.ini, please enable it!
などと表示されます。
しかし、本設定を有効 On にすると、セキュリティ上のリスクが多いので、
http://www.sound-uz.jp/php/tips/security.html#01
PHP4.1.0 以降、セキュリティ上、安全な スーパーグローバル変数 ($_ENV、$_GET、$_POST、$_COOKIE、$_SERVER) の使用が可能となりました。
Movable Type 3.11-ja 以降、ダイナミック・パブリッシングによるPHPページ生成, PHP化が可能となりましたが、MTでは、グローバル変数ではなくスーパーグローバル変数の一部($_GET、$_SERVER など)が使用されています。
よって、register_globals Off であっても作動しますので、Xrea.com さんなどのレンタルサーバでは、.htaccess を活用し、従来のグローバル変数使用を無効化することをおすすめいたします。
php_flag register_globals Off
php_flag track_vars On
の2行を .htaccess ファイルに追記し、WWWサーバ上のホームディレクトリ内などにアップロードします。
2行目の track_vars は、PHP 4.0.3以降の php.ini ではデフォルト onとなっているので、省略可能のようです。従来のEGPCS 変数は、グローバル連想配列 $HTTP_ENV_VARS, $HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_COOKIE_VARS, $HTTP_SERVER_VARS でそれぞれ参照するようになるとのことです(安全対策上)。
コメントを残す