Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > it.comp.www.php > #22094 > unrolled thread

Limitare filebrowser ad una directory radice

Started byGianfranco <gbertozzi@gmail.com>
First post2018-06-14 06:46 +0000
Last post2018-06-14 14:26 +0000
Articles 4 — 2 participants

Back to article view | Back to it.comp.www.php


Contents

  Limitare filebrowser ad una directory radice Gianfranco <gbertozzi@gmail.com> - 2018-06-14 06:46 +0000
    Re: Limitare filebrowser ad una directory radice Alessandro Pellizzari <shuriken@amiran.it> - 2018-06-14 09:38 +0100
      Re: Limitare filebrowser ad una directory radice Gianfranco <gbertozzi@gmail.com> - 2018-06-14 10:37 +0000
        Re: Limitare filebrowser ad una directory radice Gianfranco <gbertozzi@gmail.com> - 2018-06-14 14:26 +0000

#22094 — Limitare filebrowser ad una directory radice

FromGianfranco <gbertozzi@gmail.com>
Date2018-06-14 06:46 +0000
SubjectLimitare filebrowser ad una directory radice
Message-ID<slrnpi43pi.3kb.gbertozzi@debian.asus.home>
Ciao,

  e scusate se scrivo qui, non trovo informazioni in rete e avrei
bisogno di un aiuto. Premetto che sono veramente inesperto in materia,
se scrivo bischerate perdonatemi. :')

  Spiego il problema: sto cercando di realizzare un semplice filebrowser
che parta da una directory radice ("./documenti"), mostri il suo
contenuto e permetta di navigare nelle sottodirectory cliccando sul link
relativo.

  Ho risolto creando una pagina (chiamiamola fb.php) che se non riceve
parametri apre la directory di default, se invece l'utente clicca su
una sottodirectory richiama se stessa con, come parametro, la nuova
directory (./fb.php?Dir="sottodir").

  Il problema e' come evitare che passando un parametro ad hoc si
scavalchi la radice "./documenti", ad esempio con "Dir=./documenti/../"
oppure "Dir=/dir-esterna/".

  Mi pare che si crei un problema di sicurezza non indifferente e,
malgrado per l'uso mio non serva, vorrei risolvere: c'e' un modo per
obbligare la procedura a rimanere confinata entro la radice? Usare una
variabile di sessione per passare il parametro mi sembra, piu' che una
soluzione, una toppa. Potrei manipolare la stringa passata, confrontando
se la parte iniziale corrisponde alla mia root togliendo eventuali
"/../" ma non mi pare una soluzione buona.

  Che mi consigliate? Ripeto che sono inesperto, abbiate pazienza! :-D

  Un saluto,

-- 
Gianfranco Bertozzi

[toc] | [next] | [standalone]


#22095

FromAlessandro Pellizzari <shuriken@amiran.it>
Date2018-06-14 09:38 +0100
Message-ID<foenraFsj3U1@mid.individual.net>
In reply to#22094
On 14/06/18 07:46, Gianfranco wrote:

>   Il problema e' come evitare che passando un parametro ad hoc si
> scavalchi la radice "./documenti", ad esempio con "Dir=./documenti/../"
> oppure "Dir=/dir-esterna/".

Use realpath() per calcolare il path effettivo a cui l'utente vuole
accedere, poi controlli che inizi con il path che hai definito, e se non
lo fa torni errore.

$pathCondiviso = "/var/www/shared/";

$pathRichiesto = realpath($pathCondiviso . $_GET['Dir']);

if (mb_substr($pathRichiesto, 0, mb_strlen($pathCondiviso)) !==
$pathCondiviso) {
  exit 'Not allowed';
}

O qualcosa del genere. Tweak a piacere.

Bye.

[toc] | [prev] | [next] | [standalone]


#22096

FromGianfranco <gbertozzi@gmail.com>
Date2018-06-14 10:37 +0000
Message-ID<slrnpi4gp5.ip9.gbertozzi@debian.asus.home>
In reply to#22095
On Thu, 14 Jun 2018 09:38:02 +0100, Alessandro Pellizzari wrote:

Ciao,


> Use realpath() per calcolare il path effettivo a cui l'utente vuole
> accedere, poi controlli che inizi con il path che hai definito, e se non
> lo fa torni errore.

  Grazie davvero per la dritta. Non conoscevo la funzione e mi stavo
incartando. Credo proprio che faccia al caso mio. :-D

  Ora provo. :-)

  Un saluto,


-- 
Gianfranco Bertozzi

[toc] | [prev] | [next] | [standalone]


#22097

FromGianfranco <gbertozzi@gmail.com>
Date2018-06-14 14:26 +0000
Message-ID<slrnpi4uov.vkh.gbertozzi@debian.asus.home>
In reply to#22096
On Thu, 14 Jun 2018 10:37:31 -0000 (UTC), Gianfranco wrote:

Ciao,


>   Grazie davvero per la dritta. Non conoscevo la funzione e mi stavo
> incartando. Credo proprio che faccia al caso mio. :-D
>
>   Ora provo. :-)

  Solo per confermare che funziona, alle volte servisse ad altri.

  Grazie ancora! :-D


-- 
Gianfranco Bertozzi

[toc] | [prev] | [standalone]


Back to top | Article view | it.comp.www.php


csiph-web