Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Nascondere i files

  1. #1
    Utente di HTML.it L'avatar di ARCTiC
    Registrato dal
    Sep 2002
    Messaggi
    2,814

    Nascondere i files

    Piu' che nascondere i nomi dei files (o dei link) dovrei evitare di passare gli stessi via query, questo perche' il programma deve processare il file e non vorrei che per una mia disattenzione nascessero problemi di sicurezza (se quealcuno dovessa "fakare" il path).

    Un uno scipt php che processa un file di testo e lo mostra producendo un contenuto html formattato.
    Ho un altro script php che serve a visualizzare la lista dei files contenuti nella directory che soddisfano determinati parametri (il nome del file e' dinamico, cosi' come il numero di files) mettendoli in una listbox (dove finisce solo una parte del titolo e non l'intero nome del file).
    Adesso devo fare in modo che il primo script prenda il file selezionato dall'utente nella listabox e lo processi.
    Per fare questo potrei usare un classico php?file=nomefile.txt ...ma ovviamente se qualcuno sostituisce il nomefile con qualcosa di strano succede un casino.
    La domanda quindi e': come faccio a far visualizzare al primo script il contenuto del file selezionato senza dare la possibilita' all'utente di modificare il nome?

    Avevo pensato che posso prendere il nome del file dalla listbox (generata dal secondo script) usando il GET ma ho due problemi: non so come prenderli, e soprattutto non so come includere il nome del file completo (ricordate che nella listbox devo visualizzare solo parte del file) in modo "invisibile" (cioe' che resti salvato da qualche parte ma che l'utente non possa vedere).

    Grazie.
    In Vino Veritas, In Scarpe Adidas, In Bagno Badedas, In Culo un Ananas ©2003 ARCTiC

  2. #2
    se a questi file puoi aggiungere un suffisso es
    suffisso_nomefile.txt

    e poi quando ci fai le operazioni lo richiami con
    $_SERVER['DOCUMENT_ROOT'].'path/suffisso_'.$_GET['file']

    non dovresti correre nessun problema
    magari prima di tutto puoi anche fare il controllo se il file esiste e se non esiste mandi un errore tipo

    Maledetto lammer che ca..o vuoi

  3. #3
    Utente di HTML.it L'avatar di ARCTiC
    Registrato dal
    Sep 2002
    Messaggi
    2,814
    lol .. lo sgamano a volo che il suffisso e' ".txt" per il momento ho risolto in questo modo: me ne frego che si veda il nome del file dal sorgente in HTML, vorrei sapere solo se ho fatto giusto.
    Ho inserito il nome del file in una form normale con listbox, a video esce la descrizione del file, come "value" c'e' il nome del file originale, che passo via POST al mio php, che lo recupera con $_POST, lo esamina e mostra l'html formattato. Se il file non esiste o non e' accessibile o altro, sputo fuori un messaggio del tipo: "Server Busy... try later" (non posso scrivere cavolate, perche' il nome del file potrebbe cambiare! e' aggiornato in realtime, quindi anche un utente leggittimo potrebbe andare in contro ad "errori").
    Ora la domanda e': e' possibile passare al php parametri NON provenienti dalla MIA pagina? ...ad esempio se io mi costruisco una pagina "fake" da qualche altra parte, e ci metto come action l'indirizzo del mio php e assegno le variabili con lo stesso nome della pagina originale.. lo script verra' comunque eseguito? ...ed ancora e' possibile introdurre un controllo nello script per fare in modo che venga eseguito SOLO se invocato dallo stesso server?
    Grazie!
    In Vino Veritas, In Scarpe Adidas, In Bagno Badedas, In Culo un Ananas ©2003 ARCTiC

  4. #4
    $_SERVER['DOCUMENT_ROOT'].'path/suffisso_'.$_GET['file']

    in questo modo utilizzando la variabile server ti assicuri che non siano richiamati file fuori dal tuo dominio, aggiungendo la parte "statica" con il suffisso ti assicuri che non siano richiamati file non previsti

    per le richieste fuori dal tuo dominio le cose si complicano, anche i referer non sono sicuri, tutto può essee falsato

  5. #5
    Utente di HTML.it L'avatar di ARCTiC
    Registrato dal
    Sep 2002
    Messaggi
    2,814
    bubu, non ci ho capito molto del formato ...ti spiego come faccio adesso (cosi' puoi tradurre con le variabili originale in moda che capisca):

    io passo dall'HTML (o meglio e' un altro script php ma ti do solo la parte html) al php la variabile col metodo classico:

    <input type=\"image\" src=\"images/btn_submit.gif\" name=\"Submit\">

    ...questo bottone e' contenuto in un frame che si chiama "Server", lo stesso frame ovviamente contiene il listbox per il select (che come value contiene il nome del file senza estensione).

    Dal php recupero il nome del file in questo modo:

    $filename = $_POST["Server"].".txt";

    ..aggiungendo quindi l'estensione a mano, almeno se ho fatti danni do solo la possibilita' di vedere i .txt. Come converto il tutto per utilizzare il metodo descritto da te?
    Considera che il form di selezione e' un in un frame, lo script che mostra i risultati in un altro frame, e il tutto e' racchiuso in una pagina html principale.
    Grazie.
    In Vino Veritas, In Scarpe Adidas, In Bagno Badedas, In Culo un Ananas ©2003 ARCTiC

  6. #6
    in questo modo se fai
    $filename = $_POST["Server"].".txt";

    e poi fai
    include($filename);

    è molto pericoloso perchè se hai attivato
    http://it2.php.net/manual/it/ref.fil...llow-url-fopen

    io posso eseguire il codice php che voglio sul tuo server
    includendo un file che creo io

    per questo ti dicevo di aggiungerere
    $_SERVER['DOCUMENT_ROOT']

    include($_SERVER['DOCUMENT_ROOT'].$filename);
    se il file è esterno al tuo server non funge

  7. #7
    Utente di HTML.it L'avatar di ARCTiC
    Registrato dal
    Sep 2002
    Messaggi
    2,814
    Ho trovato che la variabile $_SERVER['DOCUMENT_ROOT'] purtroppo non e' definita su tutti i server (tra i quali il mio, dove sto facendo le prove). Esiste un metodo standardizzato che mi consenta di far girare lo script su tutti i webserver? Inoltre: quella variabile cosa contiene? Il percorso locale (es: C:\webserver\) oppure il percorso di rete locale (es: http://192.0.0.1/) ?
    In Vino Veritas, In Scarpe Adidas, In Bagno Badedas, In Culo un Ananas ©2003 ARCTiC

  8. #8
    contiene il path locale

    quindi ti puoi definire una costante da modificare ad ogni istallazione

    define("MY_ROOT","tuopath");

  9. #9
    Utente di HTML.it L'avatar di ARCTiC
    Registrato dal
    Sep 2002
    Messaggi
    2,814
    Originariamente inviato da bubu77
    contiene il path locale

    quindi ti puoi definire una costante da modificare ad ogni istallazione

    define("MY_ROOT","tuopath");
    Mi sa che e' quello che faro', anche se in questo modo, lo script distribuito non funzionera' senza essere modificato.
    Per ora, almeno sul mio server locale, ci ho messo questo:

    $filename = substr($_SERVER['SCRIPT_FILENAME'],0,strlen($_SERVER['SCRIPT_NAME']) * - 1).$_POST["Server"].".txt"

    ...che estrae la dir che contiene il php, che poi sarebbe la stessa dir che (per ora) contiene tutto il resto. Potrebbe dare qualche problema?
    In Vino Veritas, In Scarpe Adidas, In Bagno Badedas, In Culo un Ananas ©2003 ARCTiC

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.