Eine kurze Diskussion über die Sicherheit von PHP-Variablenvariablen

怪我咯
Freigeben: 2023-03-10 20:58:01
Original
1511 Leute haben es durchsucht

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 = &#39;phpinfo&#39;;
$a();
?>
Nach dem Login kopieren

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 = &#39;phpinfo&#39;;
${$a()};
?>
Nach dem Login kopieren

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()}}";
 
?>
Nach dem Login kopieren

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 = &#39;phpinfo()&#39;;
echo $a; //输出phpinfo()字符串
echo &#39;$a&#39;; //输出$a字符串
echo "$a"; //输出phpinfo()字符串
?>
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!