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を使ってやれば、

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

 

なので、

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

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

 

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

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

関連記事

  1. PHP

    PHP

    PHP4では読み込めていたんですが。。。

     先日、急にあるプログラムが正常に動作しなくなったとの報告がありま…

  2. PHP

    PHP

    お問合せフォームのスパム対策

    お問合せフォームからスパムメールが大量に届くという報告が入りました。…

  3. PHP

    PHP

    【PHP】FPDF 日本語を扱う

    PHPライブラリーFPDFで日本語を扱う方法PHPでP…

  4. PHP

    PHP

    新着情報の不具合

    お客さんから、ホームページに表示させている新着情報が表示されなくな…

  5. PHP

    PHP

    PHPExcel エクセルをダウンロード

    PHPExcelを使ってエクセルファイルを出力する場合、ファイルを…

  6. PHP

    PHP

    PHPでは'01'と'1'は同じなの!?

    PHPで、などとすると'01'と'1'は同じってみなされるの?…

コメント

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

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

最近の記事

  1. PHP
  2. PHP
  3. 風邪予防
  4. WordPress(WP)
  5. PHP
  6. 宅建
  7. アンチWP
  8. 日本語ドメイン
  9. WordPress(WP)
  10. SSL(HTTPS通信)
PAGE TOP