Yii Framework Forum: Metodi Per Criptare La Password - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Metodi Per Criptare La Password Rate Topic: -----

#1 User is offline   BlueWolf 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 30
  • Joined: 25-February 14

Posted 22 May 2014 - 02:02 PM

Una volta creato il mio primo login, fiero e felice, mi son reso conto che ho la password bella chiara... al posto del varchar ancora dovrei mettergli qualcosa di più appropriato.

non so che cosa utilizzare su questa piattaforma, voi cosa mi suggerite?

md5 ? sha256/512 + salt ? altri metodi?

ho trovato qualcosa in inglese ma di post vecchi, di oltre 4 anni, non so se fidarmi... daltronde il md5 forse non è più tanto sicuro al giorno d'oggi..
0

#2 User is offline   Nicola 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 271
  • Joined: 13-March 11
  • Location:Italy

Posted 23 May 2014 - 03:01 AM

Yii già propone soluzioni valide:

Yii 1: http://www.yiiframework.com/wiki/425
Yii 2: http://www.yiiframew...e-security.html

A meno che tu non abbia esigenze molto particolari dovresti essere già a posto così!

ciao
0

#3 User is offline   realtebo 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 700
  • Joined: 03-October 12
  • Location:Ferrara

Posted 23 May 2014 - 03:07 AM

noi usiamo crypt con salt

per esigenze legali dobbiamo dimostrare di non essere in grado di risalire alla password dell'utente, per cui NON la memorizziamo, usiamo la password stessa come salt e quindi ci applichiamo crypt sopra.
Il computer non ragiona, ma ha sempre ragione.
Ricordalo quando fai il debug
0

#4 User is offline   BlueWolf 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 30
  • Joined: 25-February 14

Posted 23 May 2014 - 06:32 AM

ok grazie per le dritte, ora me li studio bene :)
0

#5 User is offline   BlueWolf 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 30
  • Joined: 25-February 14

Posted 24 May 2014 - 10:50 AM

domanda....


per creare la password nel db ho eseguito questo codice:


$salt = Yii::app()->getSecurityManager()->generateRandomBytes('22');
$salt = '$2a$%13$' . strtr($salt, array('_' => '.', '~' => '/'));
$password = crypt($this->password, $salt);

ho usato generateRandomBytes perchè openssl_random_pseudo_bytes non veniva riconosciuta (probabilmente dovevo attivare qualche libreria) ma ho letto che era consigliabile usare appunto quest'altra


successivamente, per loggare appunto:

if ($password === crypt($this->password, $password))
#la password è corretta


il punto è che ho notato che la password è riconosciuta valida già digitando i 2/3...
per dire, se la password fosse bluewolf...
scrivendo bluewol, bluewolf, bluewolf24, per lui va sempre bene, e mi fa loggare...
secondo voi dove posso aver sbagliato?


edit:
ok ho risolto.
0

#6 User is offline   BlueWolf 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 30
  • Joined: 25-February 14

Posted 22 June 2014 - 03:47 PM

scusatemi, riprendo questo topic perchè a quanto pare la cosa che pensavo aver chiara, in realtà funziona per qualche strano motivo, nel login, ma non son riuscito più a riproporla sul sito.

In particolare ho una maschera, per la gestione di collaboratori, in cui si possono aggiungere/modificare/eliminare collaboratori. Il problema è che il cambio di password, col classico:

vecchia password
nuova password --- ripeti password

non riesco a farlo funzionare, la vecchia password non riesce a riconoscerla e quindi sbaglio senza dubbio il crypting.
La cosa che non capisco è com'è possibile che nel login mi funzioni e qui no.
Il codice è questo:

        public function verifica_oldPassword()
        {
            $load=AnagraficaUtenti::model()->findByPk(array("id_azienda"=>$this->id_azienda,"id_operatore"=>$this->id_operatore));
            if ($load)
            {   #quindi esiste l'utente
                if ($load->password === crypt($this->vecchia_password, $load->password))
                        return true;#la password corrisponde
                else
                    $this->addError('vecchia_password','La password non coincide');
            }
            else #l'utente non esiste
                return true;
            return false;
        }





nella registrazione funziona cosi:
        public function registra()
        {
            #alex_key è la chiave di cifratura del mio script
            $alex_key=*********  
            $salt=Yii::app()->getSecurityManager()->generateRandomBytes('22');
            $salt = '$5$'.$alex_key. strtr($salt, array('_' => '.', '~' => '/'));
            $password = crypt($this->password, $salt);

e ottenuta la password la registro come varchar64 ovviamente.

L'assurdo appunto è che la logica funziona sul login, usando userIdentity opportunamente modificato, ma in questa maschera che ho creato mi dice puntualmente che la password non coincide.
0

#7 User is offline   BlueWolf 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 30
  • Joined: 25-February 14

Posted 24 June 2014 - 10:02 AM

giusto per chiudere la storia, ho scoperto che il codice non andava e basta.
con salt $2a$, nei link citati precedentemente, la password veniva riconosciuta già conoscendo i primi 8 caratteri, o qualcosa di simile, per cui non andava bene

ho scoperto che $5$ nel salt serviva per usare lo sha256, e stranamente mi funzionava nel login, per poi scoprire che è stato 1 caso irripetibile...

alla fine ho usato questa soluzione:

http://www.yiiframew...CPasswordHelper
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users