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

    【PHP】FPDF PDFセル内での改行

    セル内で長い文章を改行FPDFを使っている場合、1つのセル内に…

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

    PHP

    WPの記事インポートで画像のサムネイルが作成されない!!

    WordPressに記事をインポートしてみたのですが、どう…

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

    PHP

    【PHP】mb_strlen()関数の注意点!!

    PHPでバイト数ではなく文字数を取得したい場合、mb_strlen…

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

    PHP

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

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

  5. MySQL(マイエスキューエル)

    PHP

    【MySQL】位置情報(座標)をGeometry型で扱う方法

    【MySQL】Geometry型で位置情報(座標)を扱う…

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

    PHP

    【PHP】imagepng()の圧縮率設定について

    imagepng(): gd-png error: compressi…

コメント

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

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

最近の記事

  1. SEO関連タグ
  2. SEO関連タグ
  3. レンタルサーバー(共用サーバー)
  4. システム開発用のアイキャッチ
  5. システム開発用のアイキャッチ
  6. ドメイン 利用制限
  7. WP:WordPress(ワードプレス)
  8. システム開発用のアイキャッチ
  9. システム開発用のアイキャッチ
  10. Theme(テーマ)の選択
PAGE TOP