Facendo riferimento ad un piccolo esperimento appena eseguito, mi sono accorto che in qualche caso è possibile scaricare in blocco l'elenco dei messaggi con l'elenco di tutti gli indirizzi email dei visitatori che hanno inserito messaggi con email reali ... per la gioia degli spammers.
Il guestbook.php effettua il salvataggio dei dati in formato XML in un file dal nome pseudocasuale ma ottenibile anteponendo il prefisso "db" al nome indicato "in chiaro" nella pagina del sito web (come indicato in figura):
[ Guests cannot view attachments ]
e posizionato in una cartella specificata durante l'inserimento del widget nella pagina del progetto e che è la root del sito se non viene specificato nulla oppure la /public sull'hosting di win aruba (per non avere i problemi di permessi) ... comunque si tratta di percorsi dai nomi "ricavabili" spesso con qualche tentativo e la perdita di un po' di tempo.
Richiamando il file ottenuto direttamente nel browser si ottiene quanto in figura:
[ Guests cannot view attachments ]
e che corrisponde a:
[ Guests cannot view attachments ]
mostrando il file che contiene i commenti nella sua interezza, ma soprattutto con gli indirizzi email di chi ha inserito i commenti "in chiaro" e quindi esponendo tutti gli email address all'invio di spam .... come se non bastasse quello fisiologico degli ultimi tempi.
La medicina?
Quella adottabile da ICM potrebbe essere di utilizzare finalmente un bel mysql. Oppure proporre dei percorsi, per il file del db di testo in xml, più difficili oppure avvisando il uebmaster del problema mediante un alert.
La soluzione adottabile dai uebmaster, l'unica facilmente ottenibile, è di inserire il file del commenti in percorsi dai nomi strampalati e lunghi.
Un sistema che in caso di necessità ho adottato io stesso in diversi casi è stato quello di "racchiudere" il file del db di testo tra un <?php echo "PRRRR!!!"; /* ed un */ ?> e dandogli una estensione .php ... certamente in questo caso andrebbe rivisto il formato di memorizzazione che non rispetterebbe più la sintassi dell' xml e comunque si esporrebbe al problema della injection che andrebbe prevenuta con opportuni controlli.
In questo modo, anche conoscendo perfettamente il nome del file e la sua posizione, richiamandolo non si ottiene altro che .... vabbè, si intuisce.