2012-02-22 8 views
2

私は誰かが書いた古いサイトで働いていて、彼らはコードのどこかにextract($_POST)に相当する何かをしました。しかし、彼らは関数抽出を使用しませんでした。動的に作成された変数はどのように見つけられますか?

このアプリケーションはもともとPHP3用に設計されていましたが、それはPHP4に移植されましたが、現在はPHP5に移植しています。

どのような機能があるのでしょうか?または、それを見つけ出す方法はありますか?私はPHPStormの 'GoTo - > Declaration'を使ってみましたが、それはそうではありませんでした....

私は変数のドキュメントをスキャンしましたが、他の参照はありません。 extractと等価な関数です。それはregister_globals設定かもしれ

foreach ($_POST as $key => $value) 
{ 
    ${$key} = $value; 
} 

答えて

3

+0

それはそれでした!ありがとうございました、それはコードを探して私の頭をしていたが、それはコードではなかった、それはphp.iniの設定でした! – Mattisdada

+0

ようこそ。 register_globals設定をオンにすると、誰でもHTTPリクエストでクエリ文字列(またはPOST/Cookies)に引数を追加でき、コード内ですぐに設定変数になるため、セキュリティ上の大きな欠陥が発生する可能性があります。それは非難され、オフにすることを強く推奨される理由です。 – Paulpro

+0

私は各コードを調査し、依存関係を取り除いていますが、今のところ、サーバーをバックアップして実行するだけです。しかし、巨大な助け:)。 – Mattisdada

1

はこのようなものを使用することができます。サーバー上のphp.iniファイルをチェックし、それがオンになっているかどうか確認してください。それがオンになっている場合は、PHP 5への移植の一部として、コードを修正してコードを修正する必要があります。 DEFあるhttp://php.net/manual/en/security.globals.php

+0

うーん」可能性:この記事では、他のリンクをチェックした後

別の関連ページ!考えてくれてありがとう、そのために病気を調べてください – Mattisdada

関連する問題