PHPでウェブの世界と繋がろう!
menu
ホーム > PHPセキュリティー > 2 セキュリティーの基礎 > 2-3 register_globalsを無効にする

2-3 register_globalsを無効にする

Pocket

説明

register_globalsを無効にする
POINT

  • register_globalsを無効にする
  • この機能は PHP 5.3.0 で 非推奨、PHP 5.4.0 で削除

セキュリティーを向上させるために PHPディレクティブ(指示文:php.ini) 設定で register_globals を無効にしましょう。

register_globals = Off

このPHPディレクティブ register_globals を On にした場合、スーパーグローバル変数のGET変数やPOST変数、環境変数など、PHPの外部から入力されるデータは全て グローバル変数の $変数名 という書式で使用出来るようになります。

//スーパーグローバル変数のPOST変数
$_POST['name'] = 'taro';
//$_POST['name']をグローバル変数の$nameで使用可能
echo $name;

結果は

taro

となります。

これは、データがどこから来たのかが不明であり、出処を仮定するしかない 変数を使用することになるということです。スクリプト自体で定義される内部変数は、ユーザーにより送信された汚染リスクのある入力データと混ざってしまいます。この認識がないと非常に危険であり混乱を招くことになります。

このディレクティブ自体が安全でないわけではなく、誤って使用してしまうことで、アプリケーションに重大な脆弱性を生み出すことになります。

無用なリスクをとる必要はないので、このディレクティブはOffにしましょう。

タグ(=記事関連ワード)

日付

投稿日:2011年11月14日
最終更新日:2012年08月29日

関連記事

このカテゴリの他のページ

この記事へのコメント

トラックバックurl

http://www.tryphp.net/phpsecurity-base-register_globals/trackback/