Script nicht erlauben, auf einen Ordner zuzugreifen?

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
Asmodiel
Mitglied
Beiträge: 568
Registriert: 31.03.2006 14:16
Wohnort: Kassel
Kontaktdaten:

Script nicht erlauben, auf einen Ordner zuzugreifen?

Beitrag von Asmodiel »

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?
Schönen gruß, Asmodiel
Linus Thorvals hat geschrieben:Intelligence is the ability to avoid doing work, yet getting the work done.
fanrpg
Mitglied
Beiträge: 2909
Registriert: 13.12.2004 22:41

Beitrag von fanrpg »

Code: Alles auswählen

if( !preg_match('/\.\.\//', $_GET['dir']) )
// Oder
if( !stristr($_GET['dir'], '../') )
Um zu verhindern das ../ nicht in der $_GET Variable vorkommen.
Desweiteren würde ich sowas auch noch für HTTP, HTTPs, usw. prüfen.
Benutzeravatar
Asmodiel
Mitglied
Beiträge: 568
Registriert: 31.03.2006 14:16
Wohnort: Kassel
Kontaktdaten:

Beitrag von Asmodiel »

alles klar, ich habs jetzt so gemacht:

Code: Alles auswählen

if( preg_match('/\.\.\//', $_GET['dir']) OR preg_match('/\.\./', $_GET['dir']) )
{ die('Kein Zugriff auf das Verzeichniss!'); }
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 ;)
Schönen gruß, Asmodiel
Linus Thorvals hat geschrieben:Intelligence is the ability to avoid doing work, yet getting the work done.
Antworten

Zurück zu „Coding & Technik“