Hi!
ich hab ne Frage:
Ich habe ein Script entwickelt, dass mir alle Bilder aus dem Ordner phpBB/images aufruft. Nur dass ich in diesem Ordner auch Unterordner hab, wie avatars/. Die Ordner werden per get (list.php?dir=avatars/) weitergegeben.
Das Problem liegt in der Sicherheit des Scripts. Ich will nicht, dass jemand bei der manuellen eingabe von z.B. dir=../ auf mein phpBB-root verzeichniss und alle anderen auch zugreifen kann. wie kann ich das verbieten?
vllt mit preg_split('XXXX', $_GET['dir']); ?
nur das xxx auf das komm ich nicht. wenn ich .. eingebe, splittet er mir jeden buchstaben aus, wenn ich / oder . eingebe, kommt nichts, und bei ../ genauso.
gibt es eine funktion, die den anfang der variable ausgibt? also nur die ersten 3 zeichen?
Script nicht erlauben, auf einen Ordner zuzugreifen?
Script nicht erlauben, auf einen Ordner zuzugreifen?
Schönen gruß, Asmodiel
Linus Thorvals hat geschrieben:Intelligence is the ability to avoid doing work, yet getting the work done.
Code: Alles auswählen
if( !preg_match('/\.\.\//', $_GET['dir']) )
// Oder
if( !stristr($_GET['dir'], '../') )
Desweiteren würde ich sowas auch noch für HTTP, HTTPs, usw. prüfen.
alles klar, ich habs jetzt so gemacht:
und es geht, das zweite ist deswegen, da das verzeichnis auch über $dir=.. aufgerufen werden konnte 
auf jeden fall kommt da keiner mehr ran. und mit einem punkt (und/oder slash) kommt man aufs images verzeichnis
Code: Alles auswählen
if( preg_match('/\.\.\//', $_GET['dir']) OR preg_match('/\.\./', $_GET['dir']) )
{ die('Kein Zugriff auf das Verzeichniss!'); }

auf jeden fall kommt da keiner mehr ran. und mit einem punkt (und/oder slash) kommt man aufs images verzeichnis

Schönen gruß, Asmodiel
Linus Thorvals hat geschrieben:Intelligence is the ability to avoid doing work, yet getting the work done.