un'aiutino? qualcuno può darmelo? Grazie![]()


Di discussioni come questa se ne vedono a palate per il web, ma non sono riuscito a farmi un'idea chiara.
Nel mio small project devo neutralizzare i dati che gli utenti mandano in input dato che in internet niente è sicuro [cit. Borgo Italia].
Questi dati sono pochi (per ora):
-Username
-Password
-Testo dei messaggi
Io per ora uso una cosa semplice tipo questa per il login o registrazione:
-Tolgo gli apostrofi (sostituisco "'" con "") (li permetto solo nei messaggi)
-controllo lunghezza min e max
-htmlentities
-addshashes
E per le mail nella registrazione devo ancora aggiungere la funzione per controllare che abbia il formato valido
Mentre per il testo dei messaggi:
-htmlentities
-addslashes
Ora parto con le domande:
1. L'addslashes nel login è inutile se tolgo gli apostrofi vero?
2. Con un metodo del genere quanto sarei sicuro da 1 a 10?
3. Ho visto che alcuni considerano addslashes deprecato. Molti giocano con "get_magic_quotes_gpc()": se è attivo usano stripshashes (dicono che get_magic_quotes non sia perfetto) e poi utilizzano mysql_real_escape_string; se invece è disattivo usano semplicemente mysql_real_escape_string.
Questo ragionamento andrebbe bene dato che il mio host non mi permette di modificare php.ini
Ragazzi è da tutto il pomeriggio che leggi post su post ma niente da fare.
Chiedo qui perchè per altre cose mi sono chiarito bene le idee.
Grazie in anticipo


un'aiutino? qualcuno può darmelo? Grazie![]()
ciao
considera che è ferragosto e molti sono in spiagga.
comunque cominciamo:
più che togliere intanto io verificherei i dati immessi e se non sono adeguati li farei reinserire senza nemmeno avvicinarsi al db.
es per verificare user e pass potresti usare una funzione di questo tipo
per l'emailCodice PHP://$testo=testo da verificare, $mi lunghezza minima del testo, $ma lunghezza massima
function ver_testo($testo,$mi,$ma){
$pattern="/^[a-zA-Z0-9]{".$mi.",".$ma."}$/";//al pattern poi puoi eggiungere eventuali carratteri particolari es l'undescore
if(preg_match($pattern, $testo)){
//testo ok
return TRUE;
}else{
return FALSE;
}
}
per un testo lungo usereiCodice PHP:$verifica=filter_var($email, FILTER_VALIDATE_EMAIL);//restituisce TRUE se email ok, altrimenti FALSE
fatto questo (ti scrivo in pseudo codice)Codice PHP:$tag_ammessi="<br> <br /> <p>";// strip_tags toglie tutti i tag con esclusione degli ammessi se ci sono
$testo=strip_tags($testo, $tag_ammessi);//strip_tags($testo)toglie tutti i tag es <a></a> e <script></script>
se controlli == TRUE salvi (o fai quello che devi fare)
altrimenti rimandi l'utente al form pulito per un nuovo tentativo
ultimo per ora: la pass dovrebbe essere salvata nel db codificata, come minimo con sha1
comunque se cerchi nel forum trovi diversi post sull'argomento
comunque siamo qui


Ciao e grazie per la risposta!
Ho alcuni dubbi:
-Ok per la email;
-Ok per l'username;
-Per la pass uso md5, dici che è meglio fare un md5(sha1($pass))?
-Per il testo, io lascio scrivere tutti i tag che un utente vuole scrivere, ma poi li rendo inoffensivi usando htmlentities. Va bene ugualmente?
-Non hai mai usato addslashes: lo metto sempre vero? E per il discorso di get_magic_quotes_gpc() e mysql_real_escape_string? cosa mi consiglieresti?
Grazie mille
ciao
dovrebbe essere sufficiente sha1, ho sentito comunque che ci sono delle lib di codifica migliori ma non le conosco, spero che alex legga questo post e ti sappia dire-Per la pass uso md5, dici che è meglio fare un md5(sha1($pass))?
dipende, se es fai scrivere il testo con uno dei wisi che es aggiungono lo stong, se togli tutto elimini anche lo strong, con strip_tags puoi decidere quali tag lasciare e quali eliminare-Per il testo, io lascio scrivere tutti i tag che un utente vuole scrivere, ma poi li rendo inoffensivi usando htmlentities. Va bene ugualmente?
io usa addslashes quando salvo nel db e stripslashes quando leggo e visualizzo, non uso mysql_real_escape_string, anche se so che con le pdp ci sono mezzi diversi


L'ideale sarebbe criptare la password con un salt:Per la pass uso md5, dici che è meglio fare un md5(sha1($pass))?
In alternativa se vuoi fare una cosa più semplice ma abbastanza sicura usa sha512 per criptare la password:Codice PHP:$cryptedPassword = sha1(sha1($salt) . sha1($password));
Codice PHP:$cryptedPassword = hash('sha512', $password);
Dipende dalle tue esigenze, se vuoi consentire l'utilizzo di alcuni tag usa strip_tags, altrimenti htmlentities può andar bene.Per il testo, io lascio scrivere tutti i tag che un utente vuole scrivere, ma poi li rendo inoffensivi usando htmlentities. Va bene ugualmente?
Per evitare questi problemi potresti usare classi per l'astrazione come pdo, che sono soluzioni nettamente migliori.on hai mai usato addslashes: lo metto sempre vero? E per il discorso di get_magic_quotes_gpc() e mysql_real_escape_string? cosa mi consiglieresti?
Altrimenti per quanto riguarda get_magic_quotes_gpc e mysql_real_escape_string fai cosi (addslashes non lo vedo necessario se utilizzi mysql_real_escape_string):
Codice PHP:// verifichi se il magic quote è attivo, nel caso lo fosse elimini i backslash inseriti da php con stripslashes
if(get_magic_quotes_gpc()) {
$username = stripslashes($username);
$email = stripslashes($email);
// eventuali altri dati
}
// fatto questo effettui l'escape di eventuali caratteri pericolosi con mysql_real_escape_string
$username = mysql_real_escape_string($username);
$email = mysql_real_escape_string($email);
// eventuali altri dati
Ultima modifica di marco_rx; 18-08-2012 alle 15:04


ciao
aspetto a chiudere (può rispondere/interessare a qualcun'altro).
comunque vorrei fare un'osservazione sulle pass.
il criptaggio della pass può essere più o meno buono, ma se es come pass usi "123456" anche con il criptaggio migliore in 5 sec bucano il tuo db.
analogo discorso se usi il nome del tuo gatto.
il problema principale (in funzione del grado di sicurezza che ti serve) è la creazione di pass lunghe (12 o più caratteri) senza senzo compiuto con numeri lettere maiscole e minuscole e un pizzico di caratteri particolari (_*£)
poi, come detto, tutto dipende dalla sicurezza che vuoi e che ti serve, se devi proteggere il conto in banca è una cosa se invece serve per diminuire lo spam è un'altra


Mmmm ok, grazie![]()


Non ho trovato il tasto edit.
Scusate l'ignoranza ma...
Questa è la configurazione del mio server:
http://server47.000webhost.com/phpinfo.php
get_magic_quotes_gpc non è attivo vero?
Thanks![]()