biztonságos path QUERY_STRING perl CGI szkriptben

Sziasztok,

adva van egy

https://domain.tld/cgi-bin/ls?sub1/sub2/..

perl CGI szkript, melynek célja, hogy a /var/www/public/
alatti hierarchiát listázza.

Ebbeb a CGI szkriptben gondoskodni kell egy megfelelő

path=s///; kifejezésről mely törli az esetlegesen kézzel bevitt nem-biztonságos karaktereket úgy, mint vezető / többszörös pontok és így tovább.

Nézegetem a CGI biztonsági doksikat, de még nem találtam meg egyértelműen a legjobb

parh =~ s///

kifejezést, help!, mi a legjobb? Előre is nagyon köszi!

Hozzászólások

up!

hahó, van itt biztonsági szakember? :-))

Talán ezzel próbalkoznék:


use Cwd 'abs_path';

my $realpath = abs_path($path);
if ($realpath !~ m|^/var/www/public/|) {
    kabbe();
} else {
    listazz($realpath);
}

igen, ez is egy lehetséges megkötezelítés, hogy eleve megmondom, mi lehet az QUERY_STRING-ben átadott path, és ha nem felel meg az abs_path-ban megadott alap útvonalnak akkor teljesen eldobom,

de én nem igazán ezt szeretném, hanem azt, hogy bármit megad, abból kiszedem a nem-kívánatos karaktereket, de amúgy hadd legyen rugalmas (mintha például, mikor azt mondja, hogy wiki/akár/mi és létre is jön az adott path), ezért keresek egy jó cserélő kifejezést, amivel a sor elejéről a /-t és globálisan a többszörös . karaktereket szűröm ki! :-)