変数変数はPHPの非常に便利な機能です。マニュアルにも記載されていますが、変数変数とは、変数の変数名を動的に設定できることを意味します。
それでは、変数の変数名を動的に設定できる場合、どのようなセキュリティ上の問題が発生するのでしょうか?見てみましょう:
<?php $a = 'phpinfo'; $a(); ?>
このコードは、変数の型が文字 phpinfo () であるため、変数が phpinfo 関数になり、動的に実行されます。
同じ原則に従って、マニュアルで変数変数の例を引用します: <?php
$a = 'phpinfo';
${$a()};
?>
マニュアルと私が挙げた例を読んだことがあるなら、これはまったく魔法ではないと感じるはずです。これは PHP の文法上の特徴です。次に、これを 1 行に進化させます。 2 ネストされた変数の場合は、上記の例に従って変数の内容を自分で入力するだけです。実際には、特定の関数を特定の変数に割り当てるため、最終的に phpinfo 関数が実行され、さまざまな脆弱性や Web シェルのプロトタイプになります。 !
これを見れば、なぜ専門家が私に
PHP マニュアルを読むように頼んだのかがわかるはずですしかし、専門家はセキュリティが基礎であると言いました。前の例では変数が単一引用符を使用しているのに、最後の例では二重引用符が使用されているのはなぜですか? この問題を考えたことがあるなら、安全に保管してください。きっと大きな牛になるでしょう!
PHP における一重引用符と二重引用符の違いは、依然として変数に関連しています。次の例を見てみましょう: 以上がPHP 変数のセキュリティに関する簡単な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。<?php
$a = "${${phpinfo()}}";
?>