Punto informatico Network
Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

php inteligente ( non troppo)

Cerchi consigli per migliorare il tuo sito? Vuoi aprire un sito in poco tempo?
Discuti con altri webmaster, chiedi chiarimenti ed opinioni in tutta libertà.
Lo spam verrà cancellato.

php inteligente ( non troppo)

Messaggioda jonni125 » dom lug 13, 2008 8:29 pm

Salve ragazzi ho modificato il modulo della registrazione al mio sito per avere le psw cifrate a md5 cripter, il file in php è:

Codice: Seleziona tutto
<?php
//il controllo per la password in un file di registrazione non serve
if (isset($_POST['risposta']))$risposta = $_POST['risposta'];     //Recupera la risposta
if (isset($_POST['nome']))$nome = $_POST["nome"];      // Recupera il nome
if (isset($_POST['email']))$email     = $_POST["email"];     // Recupera l'e-mail
if (isset($_POST['cognome']))$cognome   = $_POST["cognome"];   // Recupera il cognome
if (isset($_POST['password']))$password  = $_POST["password"];  // Recupera la 1a pwd
if (isset($_POST['password2']))$password2 = $_POST["password2"]; // Recupera la 2a pwd
$password = md5($password);       // Cripto la Password, ora
                                  // è irrecuperabile
if($nome == '' || $email == '') {
die("Non hai inserito il nickname o/e l' e-mail.");
};
if($password != $password2) { die("password e ripeti password devono essere uguali.");}
if ($risposta != "bianco" AND $risposta != "Bianco")
{
die/*che termina l'esecuzione dello script*/("La risposta è errata!");
}
//Stabilisco la data
$data_ora    = date("H:i:s");
$data_giorno = date("d/m/Y");

$apro=fopen('lol/tabelladt.html', 'a+'); // Apro/creo il file dati.html

// Scrivo nel file aperto i dati
fwrite($apro,
'<tr>
  <td><center>' . $nome        . '</center></td>
  <td><center>' . $email       . '</center></td>
  <td><center>' . $cognome     . '</center></td>
  <td><center>' . $password    . '</center></td>
  <td><center>' . $data_giorno . '</center></td>
  <td><center>' . $data_ora    . '</center></td>
 </tr>');


fclose($apro);                    // Chiudo la connessione aperta

include('ip.php');
?>



e la tabella che l' utente va a compilare è
Codice: Seleziona tutto
<html>
<head>
<title> Registrazione </title>
</head> <body>
<center>Per essere abilitati si devono aspettare almeno 2 ore, ricordate di mettere i dati corretti e buona navigazione!<br>Per una maggiore sicurezza dell' utente questo sito utilizza la cifratura delle password!!<br>
<br> <a href="http://jonni1995.altervista.org/index.php">Vai alla home</a></center><br><br>
<table> <tr> <td> <form action="operando_registrazioni.php" method="post"> Nome(nickname) </td> <td> <input type="text" name="nome"> </td> </tr>
<tr> <td> Nome(reale) </td> <td> <input type="text" name="cognome"> </td> </tr>
<tr> <td> E-Mail</td> <td> <input type="text" name="email"> </td> </tr>
<tr> <td> Password </td> <td> <input type="password" name="password"> </td> </tr>
<tr> <td> Ripeti Password </td> <td> <input type="password" name="password2"><br>
<tr><td>Controllo sicurezza(rispondi alla domanda): Di che colore è il cavallo bianco di napoleone? </td> <td> <input type="text" name="risposta"> </td> </tr>
<input type="submit" class="submit" name="Invia" value="Invia registrazione">
</form> </td> </tr>
</body>


Praticamente anche quando metto il nome e la psw corretti mi dice sempre il nome utente e la psw devono essere uguali anche se in realtà sono uguali! Dov'è il problema??
www.jonnicomputer.helloweb.eu
Avatar utente
jonni125
Bronze Member
Bronze Member
 
Messaggi: 914
Iscritto il: ven gen 04, 2008 3:21 pm
Località: Casa mia!

Messaggioda M@ttia » dom lug 13, 2008 8:54 pm

Perché prima cripti la pwd1, e poi la confronti con la pwd2 non criptata, il che ovviamente produce due stringhe differenti. il controllo if($password == $password2) fallo PRIMA del criptaggio con md5.
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda jonni125 » dom lug 13, 2008 9:04 pm

grazie , adesso è perfetto!!
www.jonnicomputer.helloweb.eu
Avatar utente
jonni125
Bronze Member
Bronze Member
 
Messaggi: 914
Iscritto il: ven gen 04, 2008 3:21 pm
Località: Casa mia!


Messaggioda jonni125 » dom lug 13, 2008 9:34 pm

ma c'è un modo per criptare e decriptare a mano con qualche algoritmo?
www.jonnicomputer.helloweb.eu
Avatar utente
jonni125
Bronze Member
Bronze Member
 
Messaggi: 914
Iscritto il: ven gen 04, 2008 3:21 pm
Località: Casa mia!

Messaggioda dararag » lun lug 14, 2008 9:21 am

decriptare l'md5 è molto difficile, già con un programma è quasi impossibile, figurati a mano
Maledette aziende produttrici, l'unico telefilm interessante degli ultimi tempi l'hanno interrotto alla decima puntata... e chi voleva sapere la fine?
Avatar utente
dararag
Silver Member
Silver Member
 
Messaggi: 1116
Iscritto il: mar gen 22, 2008 8:57 pm
Località: Casoria

Messaggioda eDog » lun lug 14, 2008 9:41 am

dararag ha scritto:decriptare l'md5 è molto difficile, già con un programma è quasi impossibile, figurati a mano


Un Brute Force a mano? [rotolo]
eDog,
"È meglio essere temuti o rispettati? Io dico: è troppo chiedere entrambe le cose?" - Tony Stark
Avatar utente
eDog
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3679
Iscritto il: sab dic 30, 2006 7:58 pm
Località: Vescovana (Padova)

Messaggioda M@ttia » lun lug 14, 2008 10:20 am

No decriptare l'MD5 è praticamente impossibile (a meno di bruteforce e potenza di calcolo disponibile, ma non è roba di cui preoccuparsi, inoltre per decriptarla dovrebbe comunque avertela prima rubata, quindi significa che il problema è la sicurezza del database e non di md5...). [^]
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda jonni125 » lun lug 14, 2008 11:58 am

no ma dico in modo da decriptarla io per decriptarla al pc ho scovato un sito che lo fa subito e funziona veramente!
www.jonnicomputer.helloweb.eu
Avatar utente
jonni125
Bronze Member
Bronze Member
 
Messaggi: 914
Iscritto il: ven gen 04, 2008 3:21 pm
Località: Casa mia!

Messaggioda M@ttia » lun lug 14, 2008 12:20 pm

La funzione algoritmica di md5 è non invertibile, ovvero data l'immagine non si può risalire all'argomento (tecnicamente è un "One-Way Hashing"). Se si potesse sapere di quale sito parli vediamo dove sta la fregatura [^]


P.S. ovviamente, come ben specificato sopra, è possibile tentare miliardi di password e vedere se ce n'è una che ti genera lo stesso hash salvato nel database. Questo, che innanzitutto non è un decriptaggio, bensì una tecnica che prevede, per MD5 a 128 bit, 2^128 operazioni (basti pensare che 2^80 è il numero di atomi nell'universo per capire che 2^128 non è un numero, ma è quasi un infinito dal punto di vista informatico).


Sono nati delle specie di database (come ad es. http://www.md5oogle.com) che per anni immettono stringhe casuali, le codificano e salvano l'hash, così quando un utente cerca le parole lì, se in passato sono state convertite outputta anche la parola in chiaro, ma è evidente che questo funziona solo con password piccole e banali, per il quale era meglio andare a tentativi...).




Ti basti pensare che, dando all'algoritmo l'intera bibbia tradotta in 100 lingue da criptare, esso restituirà comunque un hash da 128 bit, il che dovrebbe dare una vaga idea dell'impossibilità del decriptaggio back-way [^]).
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda jonni125 » lun lug 14, 2008 12:44 pm

ecco il sito era proprio quello! md5oogle , ma quindi decriptare è difficile! quindi come faccio a fare valere la psw criptata come psw giusta all' momento dell' inserimento , perché io nel modulo di log- in devo mettere le psw in questo modo:

Codice: Seleziona tutto
'nick' => 'psw',

Come faccio?
anche se non ho capito una cosa , dato che c'è un algoritmo per criptare quindi una parola criptata sarà sempre uguale come mai non c'è n'è uno per fare il procedimento inverso? almeno credo che una parola convertita sarà sempre convertita in un modo!
www.jonnicomputer.helloweb.eu
Avatar utente
jonni125
Bronze Member
Bronze Member
 
Messaggi: 914
Iscritto il: ven gen 04, 2008 3:21 pm
Località: Casa mia!

Messaggioda M@ttia » lun lug 14, 2008 1:24 pm

Esistono due tipi di criptazione, a dipendenza dello scopo che si vuole ottenere:

  • Both-Way hashing, nel caso in cui si voglia criptare qualcosa, che però dopo sia nuovamente decriptabile, a patto di possedere la giusta chiave di decodifica. Un esempio classico è l'algoritmo di criptazione asimmetrica RSA, usato per spedire informazioni fra due persone (es. e-mail), senza che ci intercettasse la mail potesse decodificarla (non sto a spiegare il meccanismo di chiave pubblica e privata, non serve qui).
  • One-Way Hashing, nel caso in cui serva solamente abbinare a qualsiasi cosa (testo, file, ...) una stringa alfanumerica di 128 bit che rappresenti un po' un' "etichetta" per quel file: qualsiasi file dato in pasto all'algoritmo, senza importanza della dimensione, genererà una stringa a 128 bit unica, ovvero quello è (quasi) il solo file che genererà quella stringa. Per verificare se un altro file è uguale a quello, basta criptare anche lui e vedere se genera la stessa stringa. In nessun caso però è possibile tornare indietro dalla stringa al file originale, in quanto quella è solo un'etichetta, solo una piccola stringa di testo. Questo metodo viene usato ad es. da eMule per verificare che due file siano davvero uguali fra loro (se stai scaricando da 10 fonti un file, vuol dire che quei 10 file hanno generato lo stesso hash), oppure con le password per salvarle in un database con l'assoluta privacy: nessuno può rubare la password originale, ma si può solo verificare se una nuova password genera lo stesso hash, e quindi è uguale a quello originale (in caso di furto il ladro non se ne fa nulla, a meno di provare 2^128 password e vedere quale genera l'hash rubato, cosa impossibile con un numero così elevato).
Ultima modifica di M@ttia il lun lug 14, 2008 2:52 pm, modificato 1 volta in totale.
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda jonni125 » lun lug 14, 2008 1:54 pm

capito perfettamente! ma quindi però come faccio a fare una specie di if in modo che nella pag per loggarsi si possa mettere la propria psw ma l' elaboratore invece non ha una psw vera ma vede solo quella codificata e quindi io devo inserire nel file dove vanno tutte le psw la password cifrata , le pasword e i nick vanno in seriti come ho scritto sopra...
www.jonnicomputer.helloweb.eu
Avatar utente
jonni125
Bronze Member
Bronze Member
 
Messaggi: 914
Iscritto il: ven gen 04, 2008 3:21 pm
Località: Casa mia!

Messaggioda dararag » lun lug 14, 2008 1:59 pm

bè, se ci si mette per qualche anno con uno xeon quad core acceso giorno e notte, anzi, magari con una rete di xeon quad core, forse ci si riesce
Maledette aziende produttrici, l'unico telefilm interessante degli ultimi tempi l'hanno interrotto alla decima puntata... e chi voleva sapere la fine?
Avatar utente
dararag
Silver Member
Silver Member
 
Messaggi: 1116
Iscritto il: mar gen 22, 2008 8:57 pm
Località: Casoria

Messaggioda eDog » lun lug 14, 2008 2:33 pm

jonni125 ha scritto:capito perfettamente! ma quindi però come faccio a fare una specie di if in modo che nella pag per loggarsi si possa mettere la propria psw ma l' elaboratore invece non ha una psw vera ma vede solo quella codificata e quindi io devo inserire nel file dove vanno tutte le psw la password cifrata , le pasword e i nick vanno in seriti come ho scritto sopra...


Ti basta controllare che

Codice: Seleziona tutto
$password_criptata == md5($password_in chiaro)
eDog,
"È meglio essere temuti o rispettati? Io dico: è troppo chiedere entrambe le cose?" - Tony Stark
Avatar utente
eDog
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3679
Iscritto il: sab dic 30, 2006 7:58 pm
Località: Vescovana (Padova)

Messaggioda M@ttia » lun lug 14, 2008 2:55 pm

dararag ha scritto:bè, se ci si mette per qualche anno con uno xeon quad core acceso giorno e notte, anzi, magari con una rete di xeon quad core, forse ci si riesce
2^128 possibilità.

Lo so che visto così sembra un numerino innocente, ma ricordo: 2^80 = numero di atomi nell'universo... Si può andare a prendersi il numero di operazioni (flops) di una CPU (o insieme di CPU), dividere 2^128 per quel numero e accorgersi che servirebbero migliaia/milioni di anni comunque... (se poi lo immaginassimo a 256bit o 512bit, la cosa cresce esponenzialmente, essendo 2^x possibilità).

Edit:
Prendiamo due dati da wikipedia, e assumiamo anche per semplicità che criptare & comparare una stringa prenda solo 1 operazione (cosa ovviamente falsa, ma anche con questo "regalo" la cifra è comunque esorbitante).

Wikipedia ha scritto:È stato recentemente presentato l'annuncio da parte di IBM della realizzazione entro il 2010 di un nuovo supercomputer, il Blue Gene/P che svilupperà una potenza di calcolo con picchi prestazionali di 3 Petaflops. il Blue Gene/P monterà 884736 processori quad-core PowerPC alla velocità di 850 MHz l'uno e sarà montato su 76 rack collegati tra di loro con fibra ottica.


Bene, dunque assumendo questo superPC da 3 petaflops (=3*10^15 flops = 3*10^15 operazioni al secondo) si ottiene, per la versione a "soli" 128bit della criptazione, dovendo provare tutte le possibilità:

Tempo impiegato (in secondi) = 2^128 / (3*10^15)
Tempo impiegato (in anni) = (numero qui sopra) /3600 /24 /365 = 3.15 * 10^15 anni, cioè 3.150.000.000.000.000 anni...

Ah, e ovviamente stiamo parlando del PC più potente della terra non ancora costruito, con la versione "base" a 128bit, con i calcoli arrotondati a nostro favore...



P.S.
Forse qualcuno si starà domandando: ma se la password che l'utente cripta è "pippo", provando col bruteforce ci arrivo comunque in un battibaleno no?
Beh la risposta è sì (vedi sito linkato sopra con database hash "facili"), ma la soluzione adottabile dal webmaster (che la password vuole renderla indecodificabile, dato che se fosse disonesto se la potrebbe salvare comunque ogni volta che l'utente la inserisce in chiaro) è terribilmente semplice: applicare più e più volte l'algoritmo MD5 all'hash (risultato) della passata prima:

$password_criptata = md5(md5($password_chiara));

Poiché lo si può applicare un numero arbitrario di volte, i database in internet possono al limite fornire una lista di hash comuni per md5("pippo"), ecc., ma non di md5_ripetuto_x_volte("pippo"), poiché le x volte ognuno le sceglie come vuole...
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda bluesummer » lun lug 14, 2008 3:35 pm

Beh, la forza bruta è l'ultima soluzione applicabile.
Esistono tutta una serie di attacchi mirati a ridurre l'ordine di complessità della chiave (chiavi deboli, crittanalisi differenziale, crittanalisi lineare, Langford e Hellman, Davies, ecc...)

Inoltre, quello che oggi ci può risultare impensabile, da qui a 10-20 anni potrebbe essere plausibile: prendiamo il DES, standard per oltre 25 anni, ideato nel 76 e violato nel '98 con un hardware dedicato in 56 ore.
Chi ci dice che l'AES non venga violato allo stesso modo fra qualche decina di anni?
Avatar utente
bluesummer
Aficionado
Aficionado
 
Messaggi: 104
Iscritto il: lun mag 19, 2008 12:47 pm

Messaggioda dararag » lun lug 14, 2008 4:03 pm

l'md5 inizia a spaventarmi... [...]
Maledette aziende produttrici, l'unico telefilm interessante degli ultimi tempi l'hanno interrotto alla decima puntata... e chi voleva sapere la fine?
Avatar utente
dararag
Silver Member
Silver Member
 
Messaggi: 1116
Iscritto il: mar gen 22, 2008 8:57 pm
Località: Casoria

Messaggioda jonni125 » lun lug 14, 2008 4:39 pm

quindi dovrei fare così:

tipo ad esempio mettiamo che la psw blabla criptata diventi fsdf141fgffsrfs54sfe4f5fs515
(cosa molto impossibile)

dovrei mettere questo al posto della psw
fsdf141fgffsrfs54sfe4f5fs515 = md5(md5($password_chiara));

??
www.jonnicomputer.helloweb.eu
Avatar utente
jonni125
Bronze Member
Bronze Member
 
Messaggi: 914
Iscritto il: ven gen 04, 2008 3:21 pm
Località: Casa mia!

Messaggioda M@ttia » lun lug 14, 2008 5:15 pm

fsdf141fgffsrfs54sfe4f5fs515 = md5(md5($password_chiara));

questo sopra non significa proprio nulla (fsdf141fgffsrfs54sfe4f5fs515 non è una variabile, è una stringa-risultato).


Nella pagina php dove si esegue la registrazione, metti:

Codice: Seleziona tutto
$password = md5(md5($password));
// Cripto la Password, ora è irrecuperabile


Mentre poi dove l'utente fa il login, ovvero dove va controllato se quello che scrivi è uguale a quello che c'è salvato del database, si effettua il controllo:

Codice: Seleziona tutto
if($password_salvata == md5(md5($password_scritta_ora)) {ok, sei tu...};
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda jonni125 » lun lug 14, 2008 7:13 pm

ma password scritta ora con cosa l devo sostituire?Con il nome del riquadro di testo della psw vero?
www.jonnicomputer.helloweb.eu
Avatar utente
jonni125
Bronze Member
Bronze Member
 
Messaggi: 914
Iscritto il: ven gen 04, 2008 3:21 pm
Località: Casa mia!

Prossimo

Torna a Sviluppo Web

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti

Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising