Seitenaufruf konfigurieren

Post removed (X-No-Archive: yes)
Notifier Deamon [ Sa, 15 September 2007 15:01 ] [ ID #1821286 ]

Re: Seitenaufruf konfigurieren

Ich würde ganz spontan zu if_exist() greifen.

Michael
mmueller12 [ Sa, 15 September 2007 15:12 ] [ ID #1821287 ]

Re: Seitenaufruf konfigurieren

Michael Winklhofer schrieb:
> <?php
> $aufruf = $_GET["site"];
> if($aufruf == "")
> {
> include("start.php");
> }
> include($aufruf . ".php");
> ?>

DAS ist hart... Ruf mal auf mit ?site=http://www.php.net/downloads.php

Wenn du pech hast, siehst du jetzt die PHP-Downloadseite. Anstatt dieser
harmlosen Seite kann ein Angreifer jede andere beliebige Seite so
übergeben, die dann im Kontext deiner Seite ausgeführt wird.

Relativ einfach zu beheben ist dieses gigantisch, völlig unnötige
Sicherheitsloch (eher schon ein Krater), indem man nciht blind alles
includet, was angegeben wird.

<http://www.it-academy.cc/article/1470/Include+sicher+verwenden.html>

--
Blubb
Dirk Sohler [ Sa, 15 September 2007 15:59 ] [ ID #1821288 ]

Re: Seitenaufruf konfigurieren

Dirk Sohler schrieb:
> ?site=http://www.php.net/downloads.php

*ingrid*

Es muss natürlich ?aufruf=http://www.php.net/downloads.php sein :)

--
Blubb
Dirk Sohler [ Sa, 15 September 2007 16:00 ] [ ID #1821289 ]

Re: Seitenaufruf konfigurieren

Dirk Sohler wrote:
> Dirk Sohler schrieb:
>> ?site=http://www.php.net/downloads.php
> Es muss natürlich ?aufruf=http://www.php.net/downloads.php sein :)

nein, es muss sein:
| ?site=http://www.php.net/downloads
da das Script $_GET['site'] ausliest, und da das .php automatisch
dranhängt. :)

Gruß
Michael


--
Testscript für RegEchsen:
http://diesundas.funzt-halt.net/regextest.php
Michael Ziegler [ Sa, 15 September 2007 16:05 ] [ ID #1821290 ]

Re: Seitenaufruf konfigurieren

Dirk Sohler schrieb:

>DAS ist hart... Ruf mal auf mit ?site=http://www.php.net/downloads.php

Und über ein paar simultane Aufrufe von ?aufruf=index freut sich der Server
wahrscheinlich auch.

--
Wolfgang Fellger
Wolfgang Fellger [ Sa, 15 September 2007 16:11 ] [ ID #1821291 ]

Re: Seitenaufruf konfigurieren

Post removed (X-No-Archive: yes)
Notifier Deamon [ Sa, 15 September 2007 18:07 ] [ ID #1821296 ]

Re: Seitenaufruf konfigurieren

Michael Winklhofer schrieb:
> <?php
> $dateiname = "daten/" . $_GET["site"] . ".php";
> if(file_exists($dateiname))
> include $dateiname;
> else
> include "daten/404.php";
> ?>
>
> Das funktioniert auch wunderbar, allerdings habe ich jetzt das Problem
> das ich bei Aufruf von der index.php ohne Parameter immer die
> Fehlerseite (404.php) angezeigt bekomme... und ich schaffe es nicht den
> gewünschten Inhalt (start.php) dort anzeigen zu lassen.
>
> Noch einen Tip ausser php Volkshochschulkurse? *verzweifel*

Ok, ich wollte dir die Lösung präsentieren, aber wenn du nur einen Tipp
willst ...
Was steht denn in $_GET['site'], wenn kein Parameter übergeben wird?
Gibt es die Variable überhaupt?


MfG
Sebastian Wessel

--
Individualitaet ist ok, solange wir es alle zusammen tun
Major Frankling Burns (M*A*S*H)
Sebastian Wessel [ Sa, 15 September 2007 18:35 ] [ ID #1821297 ]

Re: Seitenaufruf konfigurieren

Michael Winklhofer schrieb:

><?php
> $dateiname = "daten/" . $_GET["site"] . ".php";
> if(file_exists($dateiname))
> include $dateiname;
> else
> include "daten/404.php";
>?>

Immer noch nicht gut genug. "../index" funktioniert weiterhin.

Vorschlag:

if(empty($_GET['site']))
{
include 'start.php';
}
else
{
if(preg_match('/^[a-zA-Z0-9_]+$/', $_GET['site']) &&
file_exists($dateiname))
{
$dateiname = 'daten/' . $_GET['site'] . '.php';
include $dateiname;
}
else
{
header('HTTP/1.0 404 Not Found');
include 'daten/404.php';
}
}

Damit sind nur noch Dateinamen zulässig, die ausschließlich Buchstaben,
Zahlen und den Unterstrich enthalten. Der Versuch, irgendetwas anderes zu
übegeben, führt zum 404 (den man mit einem passenden Header kennzeichnen
sollte, sonst ärgert sich Google).

--
Wolfgang Fellger
Wolfgang Fellger [ Sa, 15 September 2007 18:37 ] [ ID #1821298 ]

Re: Seitenaufruf konfigurieren

Wolfgang Fellger macht die Ingrid und spricht:

> $dateiname = 'daten/' . $_GET['site'] . '.php';

Das hier muss natürlich noch vor das zweite if. Wer weitere Fehler findet,
möge sich melden ;-)

--
Wolfgang Fellger
Wolfgang Fellger [ Sa, 15 September 2007 18:39 ] [ ID #1821299 ]

Re: Seitenaufruf konfigurieren

Post removed (X-No-Archive: yes)
Notifier Deamon [ Sa, 15 September 2007 19:25 ] [ ID #1821301 ]

Re: Seitenaufruf konfigurieren

Michael Ziegler schrieb:
> nein, es muss sein:
> | ?site=http://www.php.net/downloads
> da das Script $_GET['site'] ausliest, und da das .php automatisch
> dranhängt. :)

Ähm, natürlich! $aufruf ists ja erst weiter unten :) Ändert aber nichts am
eigentlichen Problem des ungeprüften includens von Usereingaben.

*Kaffee trink*

--
Blubb
Dirk Sohler [ Sa, 15 September 2007 20:32 ] [ ID #1821306 ]
PHP » de.comp.lang.php.misc » Seitenaufruf konfigurieren

Vorheriges Thema: von PHP4 zu PHP6
Nächstes Thema: interested in Mr. Moore if he were not quite so interested in himself.