Variablenvariablen sind eine sehr praktische Funktion von PHP. Wie im Handbuch erwähnt, bedeutet Variablenvariablen, dass der Variablenname einer Variablen dynamisch festgelegt werden kann!
Welche Sicherheitsprobleme entstehen also, wenn der Variablenname der Variablen dynamisch festgelegt werden kann? Werfen wir einen Blick darauf:
<?php $a = 'phpinfo'; $a(); ?>
Dieser Code ist leicht zu verstehen. Der Typ der Variablen ist dynamisch zur Variablen hinzugefügt, sodass die Variable zur phpinfo-Funktion wird und dynamisch ausgeführt wird !
Nach dem gleichen Prinzip zitieren wir das Beispiel für variable Variablen im Handbuch:
<?php $a = 'phpinfo'; ${$a()}; ?>
Diese dynamische Funktion fügt natürlich dynamische Variablen ein. Meine Aussage ist etwas unprofessionell, oder eine variable Variable, wir werden feststellen, dass die PHPInfo-Funktion immer noch ausgeführt wird!
Wenn Sie das Handbuch und das Beispiel gelesen haben, das ich gegeben habe, müssen Sie das Gefühl haben, dass dies überhaupt nicht magisch ist. Dies ist die grammatikalische Funktion von PHP, und dann werden wir diese Sache in einer Zeile weiterentwickeln:
<?php $a = "${${phpinfo()}}"; ?>
Dies sind zwei verschachtelte Variablenvariablen. Wir geben einfach den Inhalt der Variablenvariablen gemäß dem obigen Beispiel ein. Tatsächlich weisen wir einer bestimmten Variablen eine bestimmte Funktion zu, also die phpinfo-Funktion Es wurde schließlich ausgeführt und wurde zum Prototyp verschiedener Schwachstellen und Webshells!
Jeder sollte nach der Lektüre wissen, warum die Experten mich gebeten haben, das PHP-Handbuch zu lesen, aber dieser Artikel endet hier, wir haben ein wenig übersehen, Herr. Wie gesagt, Sicherheit ist Die Grundlage dafür haben wir noch nicht herausgefunden. Warum verwenden die Variablen im vorherigen Beispiel einfache Anführungszeichen, während das letzte Beispiel doppelte Anführungszeichen verwendet? Wenn Sie über dieses Problem nachgedacht haben, sollten Sie es meiner Meinung nach unbedingt tun hat großes Potenzial und könnte in Zukunft eine große Sache werden!
Der Unterschied zwischen einfachen Anführungszeichen und doppelten Anführungszeichen in PHP hängt immer noch mit Variablen zusammen. Schauen wir uns das folgende Beispiel an:
<?php $a = 'phpinfo()'; echo $a; //输出phpinfo()字符串 echo '$a'; //输出$a字符串 echo "$a"; //输出phpinfo()字符串 ?>
Der Inhalt in den doppelten Anführungszeichen wird analysiert Die Syntaxvariablen von PHP und der Inhalt in einfachen Anführungszeichen werden direkt als Zeichenfolge qualifiziert!
Das obige ist der detaillierte Inhalt vonEine kurze Diskussion über die Sicherheit von PHP-Variablenvariablen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!