Sicherheitslücke oder Denkfehler?
Thomas Schmieder
- php
Hallo,
ich hasse die Escapetaste ;-(( Habe wohl den vi schon zusehr drin.
Eingabe in Startsteite:
...
<a href="./antwort01.php?HTTP_GET_VARS=aetsch" target="_blank">Variablenanzeige mit Uebergabe GET</a><br />
...
geht an Script antwort01.php:
...
</table>
<table width="80%" rules="all">
<caption align="left"><h1>Getvariablen</h1></caption>
<tr>
<th align="left">Index aus Array</th>
<th align="left">Wert der Variablen</th>
<th align="left">Scriptvariable</th>
</tr>
<?
foreach ($HTTP_GET_VARS as $key => $value)
{
echo "<tr>
<td><b>$key</b></td>
<td>$value</td>
<td>".$$key."</td>
</tr>";
}
?>
...
Das ganze kann man auch mit den Postvariablen machen. Bringt PHP ganz schön durcheinander. Version ist noch 4.0.4 pl1
Ist das in den neueren Versionen inzwischen repariert? Wisst Ihr was?
Grüße
Tom
Hallo,
[...]
Das ganze kann man auch mit den Postvariablen machen. Bringt PHP ganz schön durcheinander.
Version ist noch 4.0.4 pl1
Deshalb (unter anderem) ist bei neueren PHP-Versionen register_globals ausgeschaltet.
Ist das in den neueren Versionen inzwischen repariert? Wisst Ihr was?
Repariert nicht. Aber register_globals ist aus. Dann gibt es pro CGI-Parameter einen Eintrag in
$_GET.
Gruesse,
CK
Hi Christian,
[...]
Das ganze kann man auch mit den Postvariablen machen. Bringt PHP ganz schön durcheinander.
Version ist noch 4.0.4 pl1
Deshalb (unter anderem) ist bei neueren PHP-Versionen register_globals ausgeschaltet.
Ist das in den neueren Versionen inzwischen repariert? Wisst Ihr was?
Repariert nicht. Aber register_globals ist aus. Dann gibt es pro CGI-Parameter einen Eintrag in
$_GET.
also doch Denkfehler. Schalte ich gleich mal register_globals aus und versuchs dann nochmal.
Danke
Tom
Hallo alle zusammen,
hallo Christian,
ich habe den Versuch mit abgeschalteten register_globals wiederholt und bin LEIDER zum gleichen Ergebnis gekommen. Bei Version 4.0.4pl1 wird die Array-Variable zerstört. Er erkennt aber noch, dass es sich um ein Array handelt ($$key). Es liegt also ein Konflikt mit dem Gültigkeitsbreich vor. Kann man denn im Script erzwingen, dass man man die Variable aus der obersten Hierarchiestufe haben will?
Ich bitte Euch nun, den Verusch auch mal auf neuren PHP-Versionen zu wiederholen
Grüße
Tom
Moin!
Ich bitte Euch nun, den Verusch auch mal auf neuren PHP-Versionen zu wiederholen
Bei Version 4.2.3 kann ich mit dem Parameter ?_GET=wert keine Zerstörung feststellen. Er übernimmt wunschgemäß den Parameter in die Variable $_GET['_GET'].
- Sven Rautenberg
Hi Sven, Tom, Christian...
Ich bitte Euch nun, den Verusch auch mal auf neuren PHP-Versionen zu wiederholen
Bei Version 4.2.3 kann ich mit dem Parameter ?_GET=wert keine Zerstörung feststellen. Er übernimmt wunschgemäß den Parameter in die Variable $_GET['_GET'].
Ich ebenso, und zwar ist das bei allen globals so.
Tom meint mittlerweile, dass sein (Denk-)Fehler im Selbsbeziehen auf den Variablennamen in einer foreach-schleife (mittels $$wert) liegt. In sofern ist denke ich klar gestellt, dass dieses Risiko ein selbstgemachtes war.
- Sven Rautenberg
Fabian
Hallo zusammen,
vielen Dank für die Denkhilfe. Hatte wohl etwas im Kreis herumgebastelt und gedacht.
Ist aber ein wichtiges Argument, register_globals=off zu behalten und dann auch ganz konsequent mit den Array-Variablen zu arbeiten, und auch kein session_register() mehr zu benutzen, sondern nur Direktzuweisungen auf $_SESSION['bla'].
Werde mir mal schnellstens die neue Version von PHP installieren. Dies $HTTP_*_VARS ist mir doch zu lang ;-) Welche Version ist denn jetzt fehlerfrei? Da war doch was mit dem Fileupload, oder? Darum hatte ich ja noch nicht umgestellt.
Grüße aus http://www.braunschweig.de
Tom