• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Icludierung von .php Dateien

pxLooh

Neues Mitglied
Guten Abend,

ich bin derweil mit meiner Homepage vom Design her am Ende angelangt.
Nun möchte ich in der Navigation verlinkungen auf die jeweiligen Menüoptionen erstellen.
Im FAQ habe ich die Methode gefunden mit dem Switch, jedoch auf ein Verzeichnis beschränkt.

Wenn ich das also richtig verstanden habe ist der Code in der Index eingetragen:
PHP:
<?php
include 'include/home' . basename($_GET['datei']) . '.php';
?>
Und über den Dateinamen hier oben im Beispiel "home" wählt er sich dann auch den Pfad raus und gibt mir den Inhalt im Design von der Index.php wieder.

Nun habe ich jedoch ein Problem wenn ich diesen Code oben einfüge und auf meine Homepage connecte,
dann lädt sie und baut sich richtig und vollständig auf doch im nächsten Moment sehe ich dann nur noch weiß.

Den Code habe ich im Head stehen, zum Test ist der Inhalt der gleiche wie der von der Index.php,
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
   
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css" />
<title>PixelCraft 2013</title>
    <!-- Slidersektion -->
    <link rel="stylesheet" type="text/css" href="engine1/style.css" />
    <script type="text/javascript" src="engine1/jquery.js"></script>
    <!-- Slidersektion Ende -->
<?php
include 'include/home' . basename($_GET['datei']) . '.php';
?> 
</head>

Kann mir einer verraten was ich falsch mache?
Schönen abend und Danke.

Auf Wunsch kann man mich auch unter Skype erreichen und bekommt den Link zum vorführen des Fehlers.
Skype:hool.epvp
 
Auf Wunsch kann man mich auch unter Skype erreichen
Und warum sollten wir den Wunsch haben, dich per Skype zu erreichen?

Du kannst doch nicht den Inhalt im Header laden, da gehört das doch nicht hin. Und wenn du dir mal den HTML-Code, den der Browser bekommt, angesehen hättest, wäre dir das eventuell selber aufgefallen.
 
Auf Wunsch kann man mich auch unter Skype erreichen und bekommt den Link zum vorführen des Fehlers.
Skype:hool.epvp

Wieso legst du den Link nicht einfach mit rein? Du kannst doch nicht erwarten, dass sich andere noch die Mühe machen und dich versuchen bei Skype zu erreichen um ein Link zu bekommen um so DEIN Problem zu beheben...
 
<?php
include 'include/home' . basename($_GET['datei']) . '.php'
;
?>

Diese Methode ist ganz schlecht damit entsteht eine große Sicherheitslücke. Damit kann ein Angreifer auf deinen Webspace alles machen was er will.

Besser du verwendest dafür ein Array (White List)

Mfg Splasch
 
Zuletzt bearbeitet:
Und was soll daran schlimm sein? basename liefert den Dateinamen ohne Extension und Pfad, da kann nichts passieren. Ich würde eher noch ein file_exists einbauen.
 
Diese Methode ist ganz schlecht damit entsteht eine große Sicherheitslücke. Damit kann ein Angreifer auf deinen Webspace alles machen was er will.

Besser du verwendest dafür ein Array (White List)

Mfg Splasch

blablabla, weißt du, was basename macht? Offenbar nicht.
Allerdings solltest du wirklich eine Whitelist führen, da dein Script möglicherweise versuchen wird, eine Datei einzubinden, die es nicht gibt, falls jemand ein bisschen mit der URL spielt. Außerdem habe ich den Verdacht, dass nach home ein Slash fehlt.

Edit:
Und was soll daran schlimm sein? basename liefert den Dateinamen ohne Extension und Pfad, da kann nichts passieren. Ich würde eher noch ein file_exists einbauen.

Ohne Extension stimmt zwar nicht, aber die Idee des Einwands ist selbstverständlich korrekt.
 
Hinweis: basename() arbeitet nur mit der Eingabe Zeichenkette und beachtet nicht das eigentliche Dateisystem oder Pfadbestandteile wie etwa "..".

Diese basename() Filterung ist nicht ausreichend und kann umgangen werden bittet nicht wirklich viel Sicherheit!
Ab Php 5.2 ist es sogar möglich base64-kodierten Code zu übergeben.
Je nach Angriffsart ist die Filterung absolut wirkungslos.

Mfg Splasch
 
Zurück
Oben