0

チームは、変数を使用せず、代わりにand$_REQUESTを使用するように何度も言ったときに、変数を使用し続けます。この変数をブロックする方法があるので、再度使用すると致命的なエラーが発生するのではないかと思います。または、おそらくそれを何らかの形で非推奨にします。$_POST$_GET

たとえばunset($_REQUEST);、インクルードファイルの先頭に配置することはできますが、それらを見つけて無効にできると思います。サーバー側で実行できる必要があります。

4

2 に答える 2

1

公式の方法request_order がわからないからといって、スーパーグローバル配列REQUESTが空のままになるわけではありません。

あなたができることはあなた自身の小さなスキャナーを持っていることです..そこのコードでREQUESTを探しています..(これは単なる実験であることに注意してください)

ini_set("display_erros", "On");
error_reporting(E_ALL);
set_time_limit(0);

findUsage(__DIR__,'$_REQUEST');

出力例

$_REQUEST Found in /public_html/www/stockoverflow/a.php Line 7 
$_REQUEST Found in /public_html/www/stockoverflow/c.php Line 3 
$_REQUEST Found in /public_html/www/stockoverflow/lib/phpThumb/demo/index.php Line 2 
$_REQUEST Found in /public_html/www/stockoverflow/lib/phpThumb/demo/phpThumb.demo.gallery.php Line 36 
$_REQUEST Found in /public_html/www/stockoverflow/lib/phpThumb/demo/phpThumb.demo.gallery.php Line 45 
$_REQUEST Found in /public_html/www/stockoverflow/lib/phpThumb/demo/phpThumb.demo.gallery.php Line 47 
$_REQUEST Found in /public_html/www/stockoverflow/lib/phpThumb/demo/phpThumb.demo.gallery.php Line 4

使用した機能

function findUsage($projectDir,$find) {
    echo "<pre>";
    $di = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(__DIR__, FilesystemIterator::SKIP_DOTS));
    foreach ( $di as $file ) {
        if (! $file->isFile() || $file->getExtension() != "php")
            continue;
        $n = 0;
        foreach ( file($file) as $line ) {
            $n ++;
            if (strpos($line, $find) !== false) {
                echo $find, " Found in $file Line $n \n";
                flush();
            }
        }
    }
}
于 2012-10-18T18:04:17.307 に答える
-1

コードを安全にするためにこれを実行したい場合は、独自のコードを作成して$_Request安全です(ブートストラップに入れてください)

$_REQUEST = array_merge($_GET, $_POST); 
于 2012-10-18T17:24:22.543 に答える