Hi Community,
in Sachen PHP bin ich ein totaler Neuling. Dadurch dass ich auf meiner Webseite unbedingt Strict haben wollte kam ich um PHP und include() nicht herum, da ich nicht jede Seite ändern wollte, bei z.B. neuen Links etc.
Nun habe ich mich einige Zeit herumgetrieben und alles mögliche gelesen.
Damit der include Befehl wirklich sicher ist, scheint es wohl mit einer whitelist am besten gelöst zu sein.
Auf meiner Seite habe ich eine Ordnerstruktur die in etwa so aussieht.
index.php
home.txt
...
inhalt1
-inhalt1.txt
-inhalt2.txt
inhalt2
-inhalt1.txt
...
Nun geht es um folgendes.
Mein Code momentan wäre so:
Die 1. Frage ist ob das schon sicher genug ist, oder ob es noch irgendwelche Lücken gibt.
Die 2. Frage ist:
Da ich ja mit der Zeit immer mehr Seiten und Ordner hinzufüge wird die whitelist in Codeansicht irgendwann sehr unübersichtlich und außerdem müsste ich das für jede neue Seite immer per Hand einfügen.
Gibt es nicht eine Möglichkeit einen Code zu schreiben und darin einfach nur die Ordner z.B. inhalt1, inhalt2 etc. anzugeben und alle Dateien darin dann in die whitelist hinzuzufügen? Alle Dateien in diesen Ordnern sind zugänglich und sollen included werden.
Ich freue mich auf eure Hilfe.
Grüße
einermeiner
in Sachen PHP bin ich ein totaler Neuling. Dadurch dass ich auf meiner Webseite unbedingt Strict haben wollte kam ich um PHP und include() nicht herum, da ich nicht jede Seite ändern wollte, bei z.B. neuen Links etc.
Nun habe ich mich einige Zeit herumgetrieben und alles mögliche gelesen.
Damit der include Befehl wirklich sicher ist, scheint es wohl mit einer whitelist am besten gelöst zu sein.
Auf meiner Seite habe ich eine Ordnerstruktur die in etwa so aussieht.
index.php
home.txt
...
inhalt1
-inhalt1.txt
-inhalt2.txt
inhalt2
-inhalt1.txt
...
Nun geht es um folgendes.
Mein Code momentan wäre so:
PHP-Code:
if(isset($_GET['site']))
{
$allowed = array('home', 'impressum', 'inhalt1', 'inhalt2', 'inhalt3', 'inhalt1/inhalt1', 'inhalt1/Inhalt2', 'inhalt3/inhalt1', 'inhalt2/inhalt1', 'inhalt2/inhalt1');
$site=$_GET['site'];
if( in_array($_GET['site'],$allowed))
{
if(file_exists("$site.txt"))
{
include("$site.txt");
}
else
{
include("home.txt");
}
}
else
{
echo("404. Not found!!!");
}
}
else
{
include("home.txt");
}
Die 2. Frage ist:
Da ich ja mit der Zeit immer mehr Seiten und Ordner hinzufüge wird die whitelist in Codeansicht irgendwann sehr unübersichtlich und außerdem müsste ich das für jede neue Seite immer per Hand einfügen.
Gibt es nicht eine Möglichkeit einen Code zu schreiben und darin einfach nur die Ordner z.B. inhalt1, inhalt2 etc. anzugeben und alle Dateien darin dann in die whitelist hinzuzufügen? Alle Dateien in diesen Ordnern sind zugänglich und sollen included werden.
Ich freue mich auf eure Hilfe.
Grüße
einermeiner
Kommentar