PHP(ピー・エイチ・ピー)

PHP

【PHP】extract()関数は使うな危険!?

配列を勝手に変数に変換してくれるextract()という便利な関数があります。

 

例えば、

$array_data = array("test01" => "テスト01", "test02" => "テスト02", "test03" => "テスト03");

という配列が存在する場合、

extract($array_data);

を実行するだけで、

================================
$test01 = "テスト01";
$test02 = "テスト02";
$test03 = "テスト03";
================================
という変数を作ってくれます。

 

これをフォームで使用してやれば、

extract($_GET);

または、

extract($_POST);

とするだけで、

フォームに入力された値を勝手に変数に入れてくれますね!!

 

ただ、

なぜか個人的にあまり好きになれなかった関数なので、

基本的に私は使いません!!

 

で、

たまたまPHP関連で調べ事をしている時に、

extract()関数についての危険性を指摘したサイトを見掛けたので、

それについて少し触れてみたいと思います。

 

何が危険かというと、

既に存在する変数があると、

その値を上書いてしまうことが問題のようです。

 

例えば、

という順番にコードを書いていた場合、

悪意のあるユーザーが「http://ドメイン/?sql=~」というようにパラメータを渡してしまうと、

任意のSQL文を実行させてしまえるわけです。

 

だったら、

extract($_GET);

をスクリプトの頭の方に記述してやればいいだけなんですが、

何か恐いですね。

 

あと、

extract($_GET, EXTR_SKIP);

というようにEXTR_SKIPを使ってやれば、

既に定義されている変数を上書きすることはないようです。

 

なので、

適切に使用してやれば大丈夫だと思いますが、

セキュリティ的に問題があると言われている関数はなるべく避けたいですね!!

 

セキュリティーに厳しい不動産業者さんだと、

ツッコミが入る可能性性もあると思いますし。

WordPress短期学習プログラム

関連記事

  1. PHP(ピー・エイチ・ピー)

    PHP

    array_multisort()関数を使って多次元配列をソートしてみる【PHP】

    角丸ボタン-L配列をソートする時、例えば、$arr_d…

  2. PHP(ピー・エイチ・ピー)

    PHP

    CodeIgniter データベースキャッシュ機能を利用

    現在、CodeIgniterを利用してシステムの開発を行っています…

  3. WP:WordPress(ワードプレス)

    PHP

    WordPressの記事を特定の文字数で丸める

    ブログのトップページやカテゴリー、アーカイブページなどで、記事の一…

  4. PHP(ピー・エイチ・ピー)

    PHP

    PHPで「Class 'DomDocument' not found」というエラーが!!

    あるプログラムを載せているサーバーを変更することになったのですが、…

  5. PHP(ピー・エイチ・ピー)

    PHP

    【PHP】FPDF PDFを出力

    PHPでPDFを扱う為のライブラリー「FPDF」今回は、FPD…

  6. サーバー設定

    PHP

    UbuntuサーバからPHP5.6を完全に削除

    UbuntuサーバにインストールしているPHP5.6を訳合ってアン…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

最近の記事

  1. CakePHP
  2. PHP(ピー・エイチ・ピー)
  3. PHP(ピー・エイチ・ピー)
  4. PHP(ピー・エイチ・ピー)
  5. WP:WordPress(ワードプレス)
  6. WP:WordPress(ワードプレス)
  7. WP:WordPress(ワードプレス)
  8. Security(セキュリティ)
  9. WP:WordPress(ワードプレス)
  10. WP:WordPress(ワードプレス)
PAGE TOP