Visualizzazione risultati 1 fino 15 di 15

Discussione: Impedire ad un file leggere/scrivere al di fuori della propria cartella

  1. #1
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito Impedire ad un file leggere/scrivere al di fuori della propria cartella

    Buonasera,
    vi spiego subito il mio dilemma.

    Mi è stato dato accesso ad una directory web (che tutto sommato non è altro che la root di un dominio), il mio compito è di dover creare cartelle con nomi "strani" ed installare al loro interno script di mia creazione i quali sono formati obbligatoriamente da un file PHP editabile dall'utente.

    Ogni cartella contiene dati sensibili e che devono essere accessibili solo ad utenti da me specificati o che conoscono l'URL della directory.

    Il problema nasce qui...proprio per via dei file sensibili. Mi sono detto: "e se un utente modificasse in modo errato il file PHP al fine di leggere i dati sensibili di altri utenti?" ciò fa capire che c'è un enorme problema di sicurezza.

    Pertanto ora mi chiedo, come posso impostare i permessi alla cartella affinchè tutti i files e cartelle in essa contenuti non possano leggere altro che i files "locali"?

    Spiegandovi con un esempio:

    /dominio.tld


    /dominio.tld/e88f7653852c22e09dae1613064db84c7d35e95f_27851/
    /dominio.tld/e88f7653852c22e09dae1613064db84c7d35e95f_27851/index_A.php
    /dominio.tld/e88f7653852c22e09dae1613064db84c7d35e95f_27851/config_A.php

    /dominio.tld/d653a7837c4c3d6cc8f7a4bdfc0fffd1e5de0b73_69832/
    /dominio.tld/d653a7837c4c3d6cc8f7a4bdfc0fffd1e5de0b73_69832/index_B.php
    /dominio.tld/d653a7837c4c3d6cc8f7a4bdfc0fffd1e5de0b73_69832/config_B.php

    /dominio.tld/48aeae2025eac12acda7ea548a2ffb58198dd1cf_578938/
    /dominio.tld/48aeae2025eac12acda7ea548a2ffb58198dd1cf_578938/index_C.php
    /dominio.tld/48aeae2025eac12acda7ea548a2ffb58198dd1cf_578938/config_C.php


    Ecco...come posso fare in modo che (tipo) index_A.php possa leggere solo config_A.php e non anche gli altri?

    In poche parole, come posso evitare che un file legga/scriva o esegui script che si trovino in altre directory?

    Non so se sono stato chiaro, purtroppo l'ora non mi aiuta a semplificare le cose. Ovviamente credo che sia chiaro che devo impostare dei permessi particolari alle cartelle (credo).
    Apprezzi l'aiuto? Offrimi un caffè!

  2. #2
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    Ma l'utente in che modo può modificare il file PHP, come vuole?
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  3. #3
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Si perchè è un file template completamente modificabile.

    C'è un file che legge il contenuto del file modificabile e lo mostra in una textarea dopodichè l'utente lo modifica e lo salva, il file poi viene riscritto con il nuovo codice.

    Purtroppo sono impossibilitato anche al blocco di alcune funzioni alchè ho capito che si devono impostare particolari permessi alle directory principali. Il problema e che avendo poco a che fare con linux io non ne capisco molto e chiedevo un vostro aiuto.
    Apprezzi l'aiuto? Offrimi un caffè!

  4. #4
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    Non puoi secondo me.
    Il problema è che gli script vengono lanciati con lo stesso utente e quindi o blocchi i permessi ad alcune funzioni direttamente dalla configurazione di PHP altrimenti la vedo dura.

    Quella che vuoi fare si chiama sandbox.

    Tipo esiste questa cosa http://php.net/manual/en/runkit.sandbox.php
    Crea una specie di VM temporanea in cui gira il processo, ma per obbligare l'utente ad usarlo devi manipolare PHP per forza.
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  5. #5
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Purtroppo mi hanno negato l'autorizzazione all'installazione delle PECL runkit e nemmeno vogliono installarmele loro (intendo chi mi ha assegnato il lavoro).

    A questo punto credi che sia possibile fare qualche cosa via .htaccess?
    Apprezzi l'aiuto? Offrimi un caffè!

  6. #6
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    Citazione Originalmente inviato da miki92 Visualizza messaggio
    Purtroppo mi hanno negato l'autorizzazione all'installazione delle PECL runkit e nemmeno vogliono installarmele loro (intendo chi mi ha assegnato il lavoro).

    A questo punto credi che sia possibile fare qualche cosa via .htaccess?
    Secondo me no.
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  7. #7
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Infatti è come dici tu. Però a questo punto mi viene d'obbligo la domanda: come posso, sfruttando la sandbox, evitare che l'utente salga alla root del sistema?

    Cioè posso disabilitare determinate funzioni, ma non posso disabilitare funzioni essenziali come file_get_contents() o equivalente perchè occorre al mio sistema o al template per includere certi files.
    Apprezzi l'aiuto? Offrimi un caffè!

  8. #8
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    Allora SE gli utenti possono modificare i file aggiungendo quello che vogliono, e quindi accedendo anche a file esterni, L'UNICO modo che conosco sarebbe fare come altervista, un sito per ogni utente.
    Solo in questo modo posso dare un impersonificazione al processo e bloccarlo.
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  9. #9
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Ma AlterVista associa ad ogni utente un identificativo così come dovrebbe essere. Mentre il mio spazio ogni FTP (anche se di siti diversi) associa lo stesso proprietario/identificativo...farò notare meglio questo problema, ho inserito già uno script che legge/modifica la root del server per far capire quanto è pericoloso quel che vogliono se non mi vengono incontro.

    Grazie del tuo aiuto, se poi per caso escono fuori altri metodi fattibili...beh sono ben accetti.
    Apprezzi l'aiuto? Offrimi un caffè!

  10. #10
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Ho degli aggiornamenti:

    Mi è stato permesso di modificare il file php.ini così avevo pensato di disabilitare alcune funzioni come file, file_get_contents, ecc ovvero tutte quelle funzioni che potrebbero leggere/scrivere files via PHP.

    Tuttavia non posso impedire completamente l'uso di queste funzioni perchè altrimenti non si potrebbero modificare nemmeno i file template...così chiedo: c'è qualche modo per creare una serie di funzioni limitando la scrittura/lettura ad un determinata path!?
    Apprezzi l'aiuto? Offrimi un caffè!

  11. #11
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    open_basedir = /cartella

    Pero limiti per tutti gli utenti.
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  12. #12
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Perchè per tutti gli utenti?

    Se io ho una situazione del genere:

    /
    /abc
    /def/
    /ghi/

    Ed inserisco diversi file php.ini nelle diverse directory con parametri diversi, essi non si applicheranno alla sola directory dove è contenuto il php.ini lasciando (ad esempio) la root con la configurazione standard del server?
    Apprezzi l'aiuto? Offrimi un caffè!

  13. #13
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    La mia risposta ufficiale e professionale è :
    BO, prova.
    Se ne hai uno per ogni utente immagino di si.
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  14. #14
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Citazione Originalmente inviato da binarysun Visualizza messaggio
    La mia risposta ufficiale e professionale è :
    BO, prova.
    L'ho sempre detto che sei un grande xD



    In remoto ancora non mi hanno abilitato tale opzione perchè stanno effettuando una manutenzione sul server così stavo tentando di testare questa cosa in locale, ma non riesco a capire come si abilita la scansione di altri php.ini

    Sapresti per caso aiutarmi anche su questa cosa (se non andiamo OFF-TOPIC)?
    Apprezzi l'aiuto? Offrimi un caffè!

  15. #15
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    Il problema è che sono un programmatore .net che lavora su IIS :D
    Apache l'ho installato con le impostazioni di default e mai smanettato.

    cmq da un stio trovato su internet

    1. Copiare php.ini nella cartella di configurazione del dominio.
    # cp php.ini /var/www/vhosts/domain.tld/conf/

    2. Cambiare i permessi alla directory di configurazione
    # chmod 0755 /var/www/vhosts/domain.tld/conf

    3. Modificare il php.ini
    # joe /var/www/vhosts/domain.tld/conf/php.ini

    4. Riavviare apache
    # /etc/init.d/httpd restart

    Probabilmente il php.ini eredita da quello base le impostazioni non presenti (almeno in IIS i web.config fanno cosi).
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •