Come è successo? Scombinando l'url?
Come è successo? Scombinando l'url?
se passi al tuo script l'indirizzo del file di testo da cui prendere i dati DEVI anche fare qualche controllo di sanità, altrimenti allo script si può passare un file a caso, anche sé stesso, mostrandone il contenuto, o parte, a video
cattivo mitaly, cattivo![]()
Non dobbiamo trascurare la probabilità che il costante inculcare la credenza in Dio nelle menti dei bambini possa produrre un effetto così forte e duraturo sui loro cervelli non ancora completamente sviluppati, da diventare per loro tanto difficile sbarazzarsene, quanto per una scimmia disfarsi della sua istintiva paura o ripugnanza del serpente.
Cambi 1.txt a un nome di file qualunque che sicuramente non esiste, ad esempio assdasdasd.txt; il messaggio che viene fuori (grazie, PHP, ottimi strumenti di debugging) è
da cui si ricava immediatamente che il codice di apertura del file si limita a concatenare il parametro "eve" a "../public/events/"; a questo punto è immediato cambiare l'URL per leggere a piacimento qualunque file interno del tuo sito.Warning: file_get_contents(../public/events/assdasdasd.txt) [function.file-get-contents]: failed to open stream: No such file or directory in D:\Inetpub\webs\coroconcorezzoit\circolino\evento. php on line 36 - See more at: http://www.coroconcorezzo.it/circoli....Upv3QSNP.dpuf
Tempo speso: 30 secondi.
Ah, vedo sulla destra che c'è anche degli errori relativi a scandir, forse si possono sfruttare anche quelli per riuscire ad ottenere directory listing in giro per il tuo sito.
Ultima modifica di MItaly; 04-11-2013 a 17:04
Amaro C++, il gusto pieno dell'undefined behavior.
Con controllo di sanità cosa intendi?
Intendo validare sempre i parametri per evitare che si possano fare scherzetti di questo genere. Nel tuo caso, una possibilità potrebbe essere tentare di convertire il parametro in un intero prima di fare quella concatenazione, in modo che qualunque roba che non sia semplicemente un numero venga uccisa sul nascere.
Inoltre, prima di accedere ad un percorso che dipende da un parametro può essere sensato far "risolvere" completamente il percorso, rendendolo "canonico" (ci sarà sicuramente una funzione PHP per 'sta roba, anzi, ce ne saranno 12, di cui 4 che fanno la stessa cosa ma con i parametri in ordine diverso, 3 che ricalcano la sintassi C, 3 deprecate e 2 wrapper ad oggetti che non usa nessuno perché disponibili solo da PHP 7 in poi; tutte ovviamente hanno bachi diversi) e verificando lì se effettivamente (1) i file che stai pescando stanno nella directory corretta e (2) se hanno l'estensione corretta.
Ultima modifica di MItaly; 04-11-2013 a 17:14
Amaro C++, il gusto pieno dell'undefined behavior.
Sì però se non sai neanche queste cose... come fai a chiedere "quanto chiedere per un sito"????![]()
Come db su file, consiglierei almeno di usare json per preservare i dati con un po' di struttura... oltre alla validazione dei parametri, chiaro![]()