Schrift
[thread]7663[/thread]

Dateinamen und Pfad normalisieren: Zum Vergleich mit DOCUMENT_ROOT



<< |< 1 2 >| >> 14 Einträge, 2 Seiten
GwenDragon
 2006-01-30 14:48
#62435 #62435
User since
2005-01-17
14787 Artikel
Admin1
[Homepage]
user image
Wie kann ich einen Pfad bzw. Dateinamen normalisieren?

File::Spec->canonpath klappt nicht.
Und File::Spec->rel2abs auch nicht.
Da bleiben leider die .. drin.

Und Cwd::realpath beschwert sich, wenn der Pfad/die Dateinicht existent ist.

Es geht nur darum zu überprüfen, ob sich eine Datei unterhalb eines bestimmten Verzeichnisses befindet.

Das ganze soll (leider) sowohl unter Windows und Un*x laufen.\n\n

<!--EDIT|GwenDragon|1138625482-->
GwenDragon
 2006-01-30 17:54
#62436 #62436
User since
2005-01-17
14787 Artikel
Admin1
[Homepage]
user image
CPAN hat bei der Suche nichts zutage gefördert und das Forum auch nicht. Von Google nicht zu reden. Vielleicht wissen die PerlMönche was?
Ist das Problem so ungewöhnlich?
Oder ignoriert ihr mich etwa ;)
Crian
 2006-01-30 18:01
#62437 #62437
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
Nein, wir ignorieren dich nicht, aber ich bilde mir ein, nicht besser suchen zu können als du und ich hab leider keine Lösung in Hinterhand :-) *daumendrück*

Man könnte natürlcih selbst anfangen, sowas zu schreiben, aber da gibts vermutlich einige Haken und Ösen und das Problem scheint ein typisches "schon-gelöst-Problem" zu sein. Komisch, dass du auf CPAN nichts gefunden hast dazu.\n\n

<!--EDIT|Crian|1138636993-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
GwenDragon
 2006-01-30 18:15
#62438 #62438
User since
2005-01-17
14787 Artikel
Admin1
[Homepage]
user image
[quote=Crian,30.01.2006, 17:01]Komisch, dass du auf CPAN nichts gefunden hast dazu.[/quote]
Na, ja. Path && normalize|| canonize habe ich benutzt (nicht sio wie geschrieben ;) ).

Entweder Cwd oder File::Spec gefunden, aber die machen nicht das was ich will.

Ich werde wohl mal noch testen müssen.
esskar
 2006-01-30 18:16
#62439 #62439
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
die frage ist,
was willst du in funktion reinstecken, und was willst du rausbekommen?
GwenDragon
 2006-01-30 18:56
#62440 #62440
User since
2005-01-17
14787 Artikel
Admin1
[Homepage]
user image
URLs überprüfen, ob die aufgelösten URLs inner halb Docroot sind.
Sowas ungefähr:
Code: (dl )
1
2
3
4
5
6
7
my $rel = $ENV{SCRIPT_URL};
my $fn =  "$ENV{DOCUMENT_ROOT}/$fn";

my $absfn = absolutepath( $fn );

die ( "nicht innerhalb $ENV{DOCUMENT_ROOT}!" )
 if ( $absfn !~ /^$ENV{DOCUMENT_ROOT}/ );
\n\n

<!--EDIT|GwenDragon|1138640220-->
esskar
 2006-01-30 19:03
#62441 #62441
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
schau dir mal CPAN:URI an.
Als scheme müsste wohl file:// richtig sein!
betterworld
 2006-01-30 19:21
#62442 #62442
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Genuegt Dir subsumes in Path::Class::Dir?
Da koennte man hoechstens noch Probleme mit Symlinks bekommen.
GwenDragon
 2006-01-30 19:53
#62443 #62443
User since
2005-01-17
14787 Artikel
Admin1
[Homepage]
user image
URI::file, jawoll!
Da hatte ich wohl Tomaten auf den Augen.
Das klappt gut.

new_abs() schafft einen absoluten Pfad.

Code: (dl )
1
2
3
4
5
6
sub _isSecurePath {
 my $f = URI::file->new_abs( shift() );
 my $d = URI::file->new_abs( $ENV{DOCUMENT_ROOT} );

 return $f =~ /^$d/;
}


Danke euch. :D\n\n

<!--EDIT|GwenDragon|1138643659-->
esskar
 2006-01-30 20:06
#62444 #62444
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=GwenDragon,30.01.2006, 18:53]Da hatte ich wohl Tomaten auf den Augen.[/quote]
glaube ich nicht; es ist schwer die Nadel im Heuhaufen zu finden!
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2006-01-30 14:48.