Include z.b www.domain.de/index.php?include=news.php
Jan
- php
0 Benne0 Jan0 Alexander Brock0 Dennis0 Tobias Kloth-2 Benne
2 Dennis
Hi,
mein Problem ist das ich ein Php anfänger bin und ich nicht weiß wie ich volgendes bewerstelliege:
ich möchte das meine index.php an einer stelle eine seite per include einfügt:
include $zielseite;
vobei zielsitet die seite sein soll die oben in der url steht:
www.domain.de/index.php?include=news.php
in diesem falle news.php .
habt ihr dafür ein tutorial?
mfg jan
Hallo,
vobei zielsitet die seite sein soll die oben in der url steht:
www.domain.de/index.php?include=news.php
in diesem falle news.php .
meinst du etwa
[code=php]include $_GET["include"];[/code]
vielleicht kannst du uns noch mehr zu deinem Anwendungsfall schildern, denn ich finde diese "Lösung" äußerst bedenklich und ich denke es lässt sich anders lösen.
Gruß,
Benne
Ja danke das war...
toll ich hatte schon die lösung und dachte das wäre doch das falsche!
Hallo Freunde des gehobenen Forumsgenusses,
Ja danke das war...
Nein, das war es nicht. Lade auf gar keinen Fall ein PHP-Script auf deinen Server,
das eine solche Sicherheitslücke enthält!
Verwende bitte ein vernünfiges Konstrukt:
<?php
$erlaubte_seiten = array('news.php', 'index.php', [etc...]);
include(
in_array ($erlaubte_seiten, $_GET['include']) ? $_GET['include'] : 'default.php'
);
?>
Andere Forumsteilnehmer mögen meinen Code auf Sicherheitslücken untersuchen,
es ist möglich, dass ich eine solche eingebaut habe.
Gruß
Alexander Brock
Hi Alexander,
in_array ($erlaubte_seiten, $_GET['include']) ? $_GET['include'] : 'default.php'
>
> Andere Forumsteilnehmer mögen meinen Code auf Sicherheitslücken untersuchen,
> es ist möglich, dass ich eine solche eingebaut habe.
Ganz kleiner Fehler: Die Parameter für [in_array()](http://de2.php.net/in_array) müssen grade anders herrum angegeben werden - ich habe es auch vorhin nachgucken müssen ;-)
bool in\_array ( mixed needle, array haystack [, bool strict] )
MfG, Dennis.
--
Mein SelfCode: [ie:{ fl:( br:> va:) ls:\[ fo:) rl:( n4:# ss:) de:\] js:| ch:{ sh:| mo:} zu:|](http://www.peter.in-berlin.de/projekte/selfcode/?code=ie%3A%7B+fl%3A%28+br%3A%3E+va%3A%29+ls%3A%5B+fo%3A%29+rl%3A%28+n4%3A%23+ss%3A%29+de%3A%5D+js%3A%7C+ch%3A%7B+sh%3A%7C+mo%3A%7D+zu%3A%7C)
"Funktioniert nicht" hat exakt den selben Aussagewert wie "husseldiguggeldu" ([Cheatah](http://forum.de.selfhtml.org/?t=109923&m=688062))
Hallo Alexander,
in_array ($erlaubte_seiten, $_GET['include']) ? $_GET['include'] : 'default.php'
andersrum:
in_array($_GET['include'], $erlaubte_seiten) ? $_GET['include'] : 'default.php'
in_array() sucht im zweiten Parameter nach dem ersten, nicht andersrum.
Grüße aus Nürnberg
Tobias
Hallo Alexander
Ja danke das war...
Nein, das war es nicht. Lade auf gar keinen Fall ein PHP-Script auf deinen Server,
das eine solche Sicherheitslücke enthält!
1. ist deine Lösung falsch
2. habe ich bereits erwähnt, dass ich die Lösung für ausgesprochen schlecht halte.
Meiner Meinung nach sollte man das ganz anders angehen. Um Jan helfen zu können sollte er doch bitte seine eigentliche Problemstellung schildern.
Gruß,
Benne
Hallo Freunde des gehobenen Forumsgenusses,
- ist deine Lösung falsch
Na und? Ich habe extra geschrieben, dass ich auch ein Mensch bin und mal die Reihenfolge
irgendwelcher Parameter verwechseln kann. Außerdem enthält meine Lösung trotzdem vermutlich
keine Sicherheitslücke, echo (string)array() ergibt nämlich "Array".
Gruß
Alexander Brock
Hi Benne,
vobei zielsitet die seite sein soll die oben in der url steht:
www.domain.de/index.php?include=news.php
in diesem falle news.php .
meinst du etwa
include $_GET["include"];
Das sollte man AUF GAR KEINEN FALL machen!!
Denn damit hast du eine ziemlich große Sicherheitslücke produziert.
Über diese Sicherheitslücke lässt sich
a) alle Dateien ausgeben, auf die auch du Zugriff hast, es besteht
für den Angreifer also die Möglichkeit an sensible Dateien
(z.B. Passwort Dateien) dran zu kommen
b) sofern allow_url_fopen auf on steht, lässt sich sogar _beliebiger_
PHP Code auf dem Server ausführen - ich will gar nicht erst
sagen, wozu dass alles mißbraucht werden könnte. Die Liste fängt
beim Versenden von Spam Mails an und hört beim Ausführen von
weiteren Hacking Angriffen auf andere Server von deiner IP aus
auf.
Aus diesem Grund: So etwas bloß nicht machen!
So ist es besser:
$pages = array("index",
"news",
"foobar",
"impressum");
if([link:http://de2.php.net/in_array@title=in_array]($_GET['page'], $pages))
{
include "path/to/the/pages/" . $_GET['pages'] . ".php";
}
else
{
include "path/to/the/pages/index.php";
}
Was hier nun anders ist:
MfG, Dennis.
Hallo Dennis,
Das sollte man AUF GAR KEINEN FALL machen!!
habe ich bereits erwähnt.
Gruß,
Benne
Hi Benne,
Das sollte man AUF GAR KEINEN FALL machen!!
habe ich bereits erwähnt.
"äußerst bedenklich" ist etwas anderes als "auf gar keinen Fall machen" - du solltest so einen PHP Code gar nicht erst jemandem vorschlagen, bedenke, dass auch später im Archiv lesende das zu Gesicht bekommen können ohne vielleicht noch weiter zu lesen.
MfG, Dennis.
Hi,
Über diese Sicherheitslücke lässt sich
...
c) auch lustig: index.php?include=index.php
E7
Hi e7,
Über diese Sicherheitslücke lässt sich
...c) auch lustig: index.php?include=index.php
Stimmt - ob man damit wohl einen Server in die Knie kriegt, wenn dieser schlecht konfiguriert ist (max_execution_time zu hoch) und man das oft genug gleichzeitig macht?
MfG, Dennis.