Zugriff auf einen Ordner durch einen PHP-Befehl ist verweige

Hallo zusammen,

ich habe das folgende Problem. Auf meiner HP (ypetrov.bplaced.net/gallery. … ion=nature

Warum ist es so? Darf ich etwa PHP-Befehle wie opendir(), readdir() nicht benutzen? Wenn ja, wie kann ich das umgehen und trotzdem auf meine Ordner zugreifen?

Für eure Hilfe wäre ich sehr dankbar.
viele Grüße
ypetrov

Kann sein, dass du bei opendir/readdir den gesamten System-Pfad mit angeben muss.

/users/ypetrov/www/

Wäre der Absolute Pfad zu deinem Webverzeichnis.
Das allerdings sollte nur bei PHP-Befehlen verwendet werden.
bei HTML z.B. wird wieder vom Webverzeichnis ausgegangen.

einmal das
und:

sieht ja höllisch aufwendig aus -> muss das so kompliziert überhaupt? je länger der code desto mehr fehler…

Hallo zusammen,

Danke für die schnellen Antworten.

[quote=„Balmung“]Kann sein, dass du bei opendir/readdir den gesamten System-Pfad mit angeben muss.

/users/ypetrov/www/

Wäre der Absolute Pfad zu deinem Webverzeichnis.
Das allerdings sollte nur bei PHP-Befehlen verwendet werden.
bei HTML z.B. wird wieder vom Webverzeichnis ausgegangen.[/quote] Verstehe ich richtig, wenn meine Bilder unter presaentation/natur liegen, muss ich bei opendir/readdir-Befehlen /users/ypetrov/www/presaentation/natur und bei html <img src=„presaentation/natur/bild.jpg“ angeben?

[quote=„Hardi“]sieht ja höllisch aufwendig aus -> muss das so kompliziert überhaupt? je länger der code desto mehr fehler…[/quote] Das weiss ich dass der code ziemlich kompliziert ist. Ich bin ein Anfänger mit HTML, PHP und JavaScript. Momentan weiss ich nicht wie den Code übersichtlich machen kann, daher sieht alles so aus :red:

[quote]Balmung hat geschrieben:
Kann sein, dass du bei opendir/readdir den gesamten System-Pfad mit angeben muss.

/users/ypetrov/www/

Wäre der Absolute Pfad zu deinem Webverzeichnis.
Das allerdings sollte nur bei PHP-Befehlen verwendet werden.
bei HTML z.B. wird wieder vom Webverzeichnis ausgegangen.
Verstehe ich richtig, wenn meine Bilder unter presaentation/natur liegen, muss ich bei opendir/readdir-Befehlen /users/ypetrov/www/presaentation/natur und bei html <img src=“presaentation/natur/bild.jpg” angeben?[/quote]

jo genau das meint balmung :slight_smile:

PS: Ich bin auch kein php profi also nciht schlimm :smiley: ich denke nur das soetwas auch einfacher sein kann :slight_smile:

Danke für eure Hilfe. :slight_smile: Ich habe meinen Fehler gefunden. Eine Datei hat gefehlt, daher konnte ich nichts sehen. Jetzt alles funktioniert. Es war nicht notwendig einen System-Pfad anzugeben.[quote=“Hardi”]PS: Ich bin auch kein php profi also nciht schlimm :smiley: ich denke nur das soetwas auch einfacher sein kann :slight_smile:[/quote] Ich bin auch überzeugt, dass alles noch besser machen kann. :wink: Später werde ich bestimmt wissen, wie man besser machen kann.

Ich bedanke mich bei euch herzlich für die Hilfe
liebe Grüße
ypetrov

Ich will noch auf eine kleine Sache aufmerksam machen:
Traue NIEMALS User-Input:
ypetrov.bplaced.net/gallery. … tion=macro
Dieser Trick funktioniert zwar nicht ( dank gpc_magic_quotes=on), stellt aber trotzdem ein
Potenzielles Sicherheitsproblem dar.
Heißt: Traue niemals dem User, wenn es sich um Funktionen wie readdir, include, require, fopen etc. handelt… (OK, man sollte Eingaben von Usern generell nicht trauen…) ).

Bei dir würde ich das übrigens so machen:

<?php
/* hash deklarieren, userinput stellt den jewiligen
 * schlüssel dar.
 */
$dirs = array( "foo" => "some/dir/", "bar" => "another/dir" );
$input  = (isset($_GET['dir'])) ? $_GET['dir'] : "foo" ;

/* ist $dir im hash nicht enthalten ? */
if (! isset($dirs[$input])) 
        die("Error: Ungültige Eingabe: $input!\n");

$dir = $dirs[$input];

/* ab hier dann
 * readdir($dir);
 * und so...
 */

Hier noch ein Link dazu (leider english): addedbytes.com/php/writing-secure-php/

greetz electron1x

Edit: hier noch ein kleines Video, dass zeigt,
was für Auswirkungen eine Sicherheitslücke in einem PHP-Skript auslösen kann.
( In dem Fall ist es zwar SQL-Injection, zeigt aber trotzdem Anschaulich die Wichtigkeit
der Thematik )

Hallo electron1x,

vielen Dank für deinen/Ihren Rat. Daran habe ich nicht gedacht. Ich werde das auf jeden Fall umsetzen.
Verstehe ich das richtig? Soll ich in meinem Fall etwa so schreiben?

$dirs = array( “macro” => “praesentation/macro”, “natur” => “praesentation/natur”, [weitere Ordner] );

Der Rest ist mir klar (glaube ich)

Kann ich übrigens irgendwo eingeben, dass alle Atribute in der Adressleiste (nach dem Fragezeichen) versteckt bleiben? Ich weiss, wenn man in einem Tag <form action=“gallery.php” method=“post> verwendet, dann in der Adressleiste kann man nur http://www.ypetrov.bplaced.net/gallery.php sehen. Da ich keine Formulare verwende, weiss ich nicht wie ich das machen kann… Hat jemand eine Idee?

liebe Grüße und nochmal Danke!
ypetrov

Dieses “Verstecken” ( auch POST kann man ohne weiteres auslesen/verändern, siehe zB das FF-Plugin Tamper-Data–) ließe sich auch via mod_rewrite* machen, damit kannst du aus
site.de/gallery/macro.html ** .

Damit hättest du den get-parameter sozusagen “versteckt”, auch wenn er immer noch da ist.

Hier ein paar Infos zu mod_rewrite: modrewrite.de/

Ja, das ist genau richtig so.

greetz electron1x

  • bin mir jetzt nicht 100%-Sicher ob das bplaced unterstützt, ich nehme es aber mal an…
    ** die Rewrite-Rule dazu sähe so aus:
RewriteRule ^gallery/([a-zA-Z]+)\.html$ gallery.php?dir=$1