ホームページ  >  記事  >  バックエンド開発  >  PHP 変数のセキュリティに関する簡単な説明

PHP 変数のセキュリティに関する簡単な説明

怪我咯
怪我咯オリジナル
2017-06-20 09:48:271470ブラウズ

変数変数はPHPの非常に便利な機能です。マニュアルにも記載されていますが、変数変数とは、変数の変数名を動的に設定できることを意味します。
それでは、変数の変数名を動的に設定できる場合、どのようなセキュリティ上の問題が発生するのでしょうか?見てみましょう:

<?php
$a = &#39;phpinfo&#39;;
$a();
?>

このコードは、変数の型が文字 phpinfo () であるため、変数が phpinfo 関数になり、動的に実行されます。

同じ原則に従って、マニュアルで変数変数の例を引用します:

<?php
$a = &#39;phpinfo&#39;;
${$a()};
?>
もちろん、私の記述は少し専門的ではありませんが、変数変数を見つけます。 phpinfo 関数がまだ実行されていることがわかります。

マニュアルと私が挙げた例を読んだことがあるなら、これはまったく魔法ではないと感じるはずです。これは PHP の文法上の特徴です。次に、これを 1 行に進化させます。 2 ネストされた変数の場合は、上記の例に従って変数の内容を自分で入力するだけです。実際には、特定の関数を特定の変数に割り当てるため、最終的に phpinfo 関数が実行され、さまざまな脆弱性や Web シェルのプロトタイプになります。 !

これを見れば、なぜ専門家が私に

PHP マニュアルを読むように頼んだのかがわかるはずです

しかし、専門家はセキュリティが基礎であると言いました。前の例では変数が単一引用符を使用しているのに、最後の例では二重引用符が使用されているのはなぜですか? この問題を考えたことがあるなら、安全に保管してください。きっと大きな牛になるでしょう!

PHP における一重引用符と二重引用符の違いは、依然として変数に関連しています。次の例を見てみましょう:

<?php
 
$a = "${${phpinfo()}}";
 
?>
二重引用符内のコンテンツは PHP の構文変数によって解析されますが、一重引用符内のコンテンツは解析されます。キャラクターとして直接特徴付けることができます。

以上がPHP 変数のセキュリティに関する簡単な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。