Newsgroup: it.comp.os.linux.development
Titolo: php3 e gestione dei file

Che la forza sia con voi.
Devo realizzare uno script che chiami una pagina html tramite una form con
una password associata che deve essere letta da un file esterno.
col php ho scritto una cosa tipo:
<?
print("<INPUT TYPE=\"HIDDEN\" NAME=\"c\" VALUE=\""); //manca la password
//codice che prende la password dal file 
$fd = fopen("password.txt", "r+");
$buffer = fgets($fd, 16);
print ("$buffer");
printf("\">");         //ora però devo cancellare sta cazzo di linea dal file!
?>
Il problema che non riesco a rislvere e' che la password e' una OTP (one time
password) e' deve essere usata una sola volta. Quindi la riga letta dal
file deve essere cancellata e non ho trovato primitive adatte.
Altro problema: dove mettere il file con le password per avere la massima 
sicurezza? 
-- 
Ciao
Salvatore 
               L'unico modo di accelerare Windows e'...a 9,8m/s^2
                Bad Penguin, la distribuzione Linux in italiano
                               ICQ# 268227566

Penso che ti convenga bufferizzare tutto il file delle password e poi
riscriverlo, tranne la prima o l'ultima (vedi il thread "Script in
Perl"). Un'altra possibilita' e' aprire il file, fare una seek fino al
carattere dopo alla password 'bruciata', e copiare il tutto in un
altro file. In ogni modo, in caso di interruzione nel processo ti
ritrovi con un po' di spazzatura e (probabilmente) il file delle
password rovinato.
Non sarebbe meglio usare un database e lasciare all'engine il compito
di cancellare la tupla?
Comunque, per rendere sicuro il file password, fai un chmod 600 per
l'utente proprietario del processo PHP.

 password rovinato.
Per questo e' sufficiente scrivere il file di password in un file
temporaneo, e poi utilizzare la rename(2) per sostituirlo al file
originario; l'operazione e' atomica quindi la consistenza e'
garantita.
Ciao,
-- 
Diego    | Per le repliche elimina dal mio indirizzo le 
Dainese  | `x' e inverti le due parole intorno alla `@'

file deve essere cancellata e non ho trovato primitive adatte.
alle prese con un non meglio precisato payment gateway? :)
le OTP sono campi a lunghezza fissa e puoi calcolare quanti byte devi 
leggere per arrivarci .. ti conviene leggere a blocchi di 16k 
(o quant'e' il tuo filesystem)  piu' rimanenza per arrivare alla OTP giusta 
e scriverli su file temporaneo .. poi leggi la OTP non la scrivi sul file 
temporaneo quindi continui con il resto del file
per l'altra OTP basta prendere l'ultima e troncare la lunghezza del file
per la ricerca viene bene la ricerca binaria .. basta ordinare il
file delle pass .. ottieni l'indice della OTP e quindi la posizione 
in byte all'interno del file
altre soluzioni sono piu' lente
-- 
Andrea Iosio                                            .---.
                                                       < ^ ; ~,
                                                        (_  _,    "Piyo"
                                                         J^^>

di cancellare la tupla?
Perfetto, grazie del consiglio, ora funziona alla perfezione.
Ora devo trovare il modo di rendere veloce e sicuro l'upload delle OTP nel 
db del mio server.
