Yii2 - Criptografar senha

361 views
Skip to first unread message

Carlos Alexandre Zucolli

unread,
Jan 12, 2016, 3:18:11 PM1/12/16
to YFB - Yii Framework Brasil
Boa tarde pessoal,

Seguindo com as dúvidas relacionadas a segurança da aplicação, fui indagado quanto ao tipo de criptografia usada para armazenar as senhas com a tabela abaixo.
De início, eu apliquei um simples login com senha guardada no banco de dados em SHA1. E não adiantou. Recusaram.



















Procurando no Guide do Yii2 me deparei com as funções de segurança de senha:
https://github.com/yiisoft/yii2/blob/master/docs/guide/security-passwords.md


        Algoritmos para uso em processos de criptografia( para armazenamento de senha ): (ESTE É O PEDIDO)

 



Minha pergunta é:
Com as funções do Yii2 Yii::$app->getSecurity(), é possível suprir as necessidades? Como eu faria pra gravar a senha criptografada e depois comparar na hora do login?

Eu também testei uma Extension , porém não consegui logar, mas essa é baseada na AES e já daria.


Bom, estou tentando e se alguém puder me ajudar a clarear a mente ficarei grato.

Muito obrigado. Valeu.

- -
Carlos

Newerton Vargas de Araújo

unread,
Jan 12, 2016, 8:01:06 PM1/12/16
to YFB - Yii Framework Brasil
Carlos,

A aplicação yii2-app-basic e yii2-app-advanced, tem o model User, que mostra corretamente como fazer uma implementação de Identidade.

Dá uma olhada com calma no yii2-app-advanced, que tem as funções de cadastro e login.

Jonatas Ferreira

unread,
Jan 13, 2016, 4:43:25 AM1/13/16
to YFB - Yii Framework Brasil
Com certeza as funções de senha do Yii irão suprir.

O problema do SHA1, MD5 e etc. é que senhas iguais sempre irão gerar o mesmo hash.

Por exemplo: Se minha senha é 123456, o hash será: 7c4a8d09ca3762af61e59520943dc26494f8941b
Se sua senha também for 123456, o hash também será o mesmo.
Existem sites na internet com um banco de dados enorme de hashs e seus respectivos valores, podendo comprometer sistemas que utilizam esse tipo de criptografia.

Isso não acontece com a função Yii::$app->getSecurity()->generatePasswordHash($password); pois ela gera um salt aleatório e junta ele com sua senha antes de criptografar (na verdade o PHP já suporta isso nativamente, veja doc da função password_hash) .

Resumindo...
Se você utilizar da forma como está descrito no guia do Yii2, você não terá problemas.



Em terça-feira, 12 de janeiro de 2016 18:18:11 UTC-2, Carlos Alexandre Zucolli escreveu:

Sérgio Lopes

unread,
Jan 13, 2016, 5:47:51 AM1/13/16
to yii-framew...@googlegroups.com
Existem inúmeras vantagens em usar algoritmos diferentes (mais complexos do que MD5 e SHA1) para criar as hashes, mas é preciso lembrar que são na mesma hashes. Podes guardar as passwords cifradas em vez de guardares uma hash, mas a vantagem é nula em grande parte dos casos.

De qualquer modo, para criares uma hash usando um algoritmo de cifra fornecido pelo Yii, tens de ter a extensão mcrypt instalada e usar os métodos do object Yii::$app->security. Nomeadamente o generatePasswordHash para gerar a hash e o validatePassword para comparares uma password com a respectiva hash.

O processo é o mesmo que se usasses MD5/SHA1 mas tens de usar os métodos da framework que te facilitam a geração da hash, configuração da complexidade e comparação de password com as hashes que tens guardadas na BD.

  • Yii::$app->security->generatePasswordHash('<password>'); quando o utilizador cria a conta ou altera a password; guardas o resultado na BD, sendo esta hash dependente do algoritmo configurado e da complexidade escolhida. Por omissão já dá um bom resultado.
  •  Yii::$app->security->validatePassword('<password>', '<versão hash da BD>'); usas para validar a autenticação do utilizador; passas a password indicada pelo utilizador na autenticação e a hash que tens guardada na BD e o método diz-te se a hash é válida para a password indicada;

Uma alternativa é cifrares a password em vez de gerares uma hash, neste caso precisas de uma senha global acessível à tua aplicação (tipicamente no ficheiro de configuração) e cifras a password nova quando crias a conta; decifras a password do utilizador sempre que quiseres comparar. Não usando hashes não há colisão mas a password mestre está no servidor, logo está acessível a um ataque na mesma.

Cumprimentos,

Sérgio Lopes


--
YFB - Yii Framework Brasil
04/2011: Anexos de até 250kb foram autorizados pelos membros da lista. Use com moderação.
---
Você recebeu essa mensagem porque está inscrito no grupo "YFB - Yii Framework Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para yii-framework-br...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/yii-framework-brasil/8b87b854-9304-4827-961c-46497525aa44%40googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--

Carlos Alexandre Zucolli

unread,
Jan 13, 2016, 5:07:35 PM1/13/16
to YFB - Yii Framework Brasil
Boa tarde Pessoal,
Desde já agradeço a todos pela ajuda.

Em conversa hoje, me informaram que seria o caso de cifrar mesmo e não de fazer hash, e no caso o Sérgio Lopes citou isso.

Daria pra fazer com o Yii2? Com algo da classe Security?


Poderia me ajudar num exemplo?

Muito obrigado.

CARLOS

Sérgio Lopes

unread,
Jan 14, 2016, 4:39:37 AM1/14/16
to yii-framew...@googlegroups.com
Bom dia,

São esses métodos mesmo. Os dados a cifrar são a password, guardas o resultado da cifra na BD, e usas uma chave secreta para cifrar e decifrar os dados. Se perderes a chave secreta perdes tudo, a chave pode ser única para todo o sistema ou composta por dados do utilizador.

Se usares uma chave única para cifrar todas as passwords podes guardá-la num ficheiro de configuração ou em qualquer outro lugar em que a tua aplicação consiga aceder, se usares dados do registo do utilizador (assim tens uma chave secreta por utilizador) tens de ter cuidado quando o utilizador altera os dados (se usares algum que possa ser alterado) senão perdes acesso à password. Se perderes a chave secreta perdes todos os dados cifrados.

Para registo/alteração de password usas o encryptByPassword('password do utilizador', 'chave secreta') e guardas resultado na tabela de registos de utilizadores/contas como se fosse a hash; para validares se o utilizador está correcto, usas o método inverso e comparas a password que o utilizador indicou com o valor decifrado. O procedimento é como o das hashes, só tens o passo extra de decifrar os dados guardados antes de comparar as passwords.

Pessoalmente, acho cifrar passwords inútil e sem vantagem, pelo contrário, em relação a hash. Com hash a única forma de obter a password (ou aproximação) é com colisão de hashes e eventualmente recorrer a tabelas de comparação, e nesse caso, se o atacante tem acesso a toda a BD para usar tabelas de comparação de hashes então tem acesso a todo o sistema. Cifrar obriga a que o atacante tenha a chave secreta, mas a chave está no servidor, em texto visível e acessível a um atacante que tem acesso a toda a BD/sistema, logo tem menos trabalho. Além disso, qualquer utilizador que tenha acesso a um registo da BD pode ter acesso à password de tiver acesso à chave secreta (funcionário, durante a manutenção do sistema, etc).

Mas voltando ao ponto :), esse link que indicaste tem o exemplo que precisas, basta que na parte dos dados a cifrar uses a password que queres cifrar.

Cumprimentos,

Sérgio Lopes


--
YFB - Yii Framework Brasil
04/2011: Anexos de até 250kb foram autorizados pelos membros da lista. Use com moderação.
---
Você recebeu essa mensagem porque está inscrito no grupo "YFB - Yii Framework Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para yii-framework-br...@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.

Cálcio

unread,
Jan 14, 2016, 6:18:08 AM1/14/16
to YFB - Yii Framework Brasil
Galera só uma informação, tanto MD5 qnt SHA1 são seguros, o problema que o povo não usa o salt.
Porém a partir do 5.5 foi criada uma API chamada password_hash. Essa API inicialmente utiliza o bcrypt como padrão.
A vantagen dessa API é que ela facilita o processo de criação e validação da senha que foi criptografada, adiciona o salt, utilizando o parâmetro cost, pelo q entendi ele que calcula o salt, o padrão é 12 e quanto maior, + difícil fica de quebrar e lógico + pesado é o processamento. Outra coisa que notei é que 50 usuários utilizem a senha 123456 esses msm 50 usuários tem seus hashs diferentes, justamente por causa do salt.

Falando do Yii, se não me engano ele usa essa API nativa do PHP para gerar as senhas criptografadas. Logo, se quer uma senha + difícil aumenta o cost da API.

exemplo da API do PHP.

<?php
 $options = ['cost' => 10]; $senha = password_hash ('123456789', PASSWORD_DEFAULT, $options);
echo $senha . '<br><br>';


Carlos Alexandre Zucolli

unread,
Jan 14, 2016, 6:17:49 PM1/14/16
to YFB - Yii Framework Brasil
Boa noite,

Juro que estou tentando, mas encontro dificuldades...

1 - Não consigo gravar corretamente no Banco de Dados. Existe algo relacionado ao charset pra dar certo?

2 - Outra coisa, deixa eu explicar se entendi como pego a senha no Form e Guardo no Banco de dados...
Pra gravar eu uso esta actionUpdate, correto?  Grava errado, apenas 1 caracter.
public function actionUpdate($id)
{
    $model = $this->findModel($id);

    if ($model->load(Yii::$app->request->post()) && $model->save()) {

        $model->password = Yii::$app->getSecurity()->encryptByPassword($model->password, Yii::$app->request->cookieValidationKey); //estou usando esta Key que está em web.php
        $model->save();

        return $this->render('update', [
            'model' => $model,
            ]);
    }
}


3 - E para recuperar a senha? Hoje está assim... Como faria pra usar o decrypt aqui?
    public function validatePassword($password)
    {

        return $this->password === $password;
    }


Seria isso o que eu consegui até agora. Desculpe, mas espero que eu entenda e possa reproduzir esta informação com mais pessoas.

Obrigado.

CARLOS

Cálcio

unread,
Jan 15, 2016, 5:06:09 AM1/15/16
to YFB - Yii Framework Brasil
@Carlos,

1) Sobre o charset tanto app qnt banco devem estar em UTF-8

2) Nunca mexi a fundo nesse método do Yii, oq pode fazer é criar uma App usando o template advanced e implementar as migrations que ele já tem pronta para essa parte de autenticação e ver como ela implementa essas coisas.

3) Essa Lib do PHP não faz o reverso, ou seja, uma vez gerado a criptografia, não consegue descriptografar e nem deveria conseguir fazer isso.

Jonatas Ferreira

unread,
Jan 15, 2016, 5:22:40 AM1/15/16
to YFB - Yii Framework Brasil
Pois é...
Não estou entendendo a lógica.

A intenção é usar uma criptografia que pode ser descriptografada (que é o caso da função encryptByPassword), podendo o administrador do sistema (ou qualquer um que tenha acesso ao fonte e ao BD) descobrir as senhas?

Eu uso o generatePasswordHash, pois como o Calcio disse, é uma criptografia de mao única, ou seja, não há como descriptografar. Além disse, como já mencionei, ele não gera um hash simplesmente, pois se você mandar criptografar 3 senhas iguais (só um exemplo), o valor das senhas criptografadas serão diferentes.


Em terça-feira, 12 de janeiro de 2016 18:18:11 UTC-2, Carlos Alexandre Zucolli escreveu:

Cálcio

unread,
Jan 15, 2016, 5:28:02 AM1/15/16
to YFB - Yii Framework Brasil
Outra coisa @Carlos se a preocupação é a recuperação de uma senha esquecida pelo usuário, a senha não recupera, é fazer o usuário gerar outra senha como acontece com a maioria dos sistemas hoje, ou ainda, o sistema gerar uma senha aleatória e enviar por e-mail essa senha.

Eduardo estevao

unread,
Jan 20, 2016, 12:52:02 PM1/20/16
to yii-framew...@googlegroups.com
Desculpem entrar no assunto sem prover uma solução direta.

Mas gostaria de salientar que MD5 e SHA-1 NÃO são seguros, ainda que com salt,e loops ou outras coisas... o problema é que o custo para um ataque a estes algoritmos é muito baixo, e a quantidade de colisões muito altas, e já não é considerado seguro nem pelo seu criador desde 2012.


Em 15 de janeiro de 2016 08:28, Cálcio <calc...@gmail.com> escreveu:
Outra coisa @Carlos se a preocupação é a recuperação de uma senha esquecida pelo usuário, a senha não recupera, é fazer o usuário gerar outra senha como acontece com a maioria dos sistemas hoje, ou ainda, o sistema gerar uma senha aleatória e enviar por e-mail essa senha.

--
YFB - Yii Framework Brasil
04/2011: Anexos de até 250kb foram autorizados pelos membros da lista. Use com moderação.
---
Você recebeu essa mensagem porque está inscrito no grupo "YFB - Yii Framework Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para yii-framework-br...@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.



--
Atenciosamente,
Eduardo Estevão

Carlos Alexandre Zucolli

unread,
Jan 20, 2016, 12:55:29 PM1/20/16
to YFB - Yii Framework Brasil
Boa tarde Pessoal

Seguinte, consegui fazer desta maneira: 

Yii::$app->getSecurity()->generatePasswordHash($password);

Aqui eu pego o hash e guardo mo banco de dados. OK
E realmente é random, nunca repete mesmo sendo a mesma senha.

Yii::$app->getSecurity()->validatePassword($password, $hash)

Aqui eu valido e faço o login.


Mas da maneira de fazendo como no Encryption and Decryption eu não consegui. 
Mas ainda preciso fazer pois vou dar como opção e tentar resolver.
O detalhe é que assim ele usa o OpenSSL e foi um das indicações a ser usada.

Alguém pode me ajudar num b-a-ba pra estes métodos?

Obrigado.

- -
Carlos

Ezaul Sena Moreira

unread,
Jan 20, 2016, 1:37:04 PM1/20/16
to yii-framew...@googlegroups.com
Boa tarde, pessoal!

Estive acompanhando a troca de informações. Que bom que, no final, sempre a solução sai.

Esta parte de criptografia e segurança é realmente muito fascinante. Eu já tive e teno bastante contato com este nicho de conhecimento, pois usamos fortemente aqui no meu trabalho.

Carlos, permita-me compartilhar um pouco do meu conhecimento sobre o assunto com vocês.

Para ser pragmático e menos massante, vamos ao que interessa pois a teoria é grande quando se trata de criptografia e seus algorítimos. Vamos lá:


Os métodos do Yii:

generatePasswordHash():  Este método do core do Yii lança mão da mais nova atualização (lançada no PHP 5.4, salvo engano) no que tange à segurança. Agora ela utiliza por padrão o Codificador Blowfish - um algorítmo bastante confiável indicado para aplicações corporativas, com baixa taxa de colisão e custo muito alto para ser quebrado. Além disso ele pode utilizar o salt dinâmico - o que dificulta o uso de uma técnica de hacker na qual se cria uma espécie de "dicionário de salts".

Bom, então ele gera um hash fixo de 60 caracteres a ser armazenado no banco. Já dá pra modelar a coluna do banco não é....

Importante: o algorítimo Blowfish é de mão única. Ou seja, não há método de descriptografia. Então, aí cai por terra a sua intenção em "reverter" a senha. Como o Cálcio disse, a opção é gerar uma senha aleatória e enviar via e-mail.

validatePassword():  Este método não faz a descriptografia. O que ele faz é pegar a senha informada, criptografar conforme custo e algorítimo de encriptação padrão da aplicação. O hash resultante então é comparado com o hash gerando anteriormente, que está armazenado na coluna "senha" no banco de dados. Se for igual, é porque a senha é válida. De forma alguma alguma ele reverte o hash em senha limpa novamente.

Estes métodos eu utilizo na classe User.php que o próprio Yii gera para nós ao criar o esqueleto da aplicação.


Quanto a questão do OpenSSL, confesso que não entendi a sua afirmação. Pois ele tem mais a ver com o servidor web (Apache, por exemplo) do que com a aplicação em si.

Espero ter ajudado.

Abs.

--
YFB - Yii Framework Brasil
04/2011: Anexos de até 250kb foram autorizados pelos membros da lista. Use com moderação.
---
Você recebeu essa mensagem porque está inscrito no grupo "YFB - Yii Framework Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para yii-framework-br...@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.



--
Ezaul Moreira.
Analista/Desenvolvedor de Sistemas
  • Fone: (91) - 98225.1574.

Sérgio Lopes

unread,
Jan 20, 2016, 5:17:26 PM1/20/16
to yii-framew...@googlegroups.com
Boa noite,

Segue um link para um exemplo que criei rapidamente, usando os métodos de cifra do Yii e que guarda os dados na BD. Os dois métodos que fazem alguma coisa de útil estão no único controlador implementado. Dá para ver o código ou colocar num servidor web para testar a execução (pasta web é a pasta pública, onde está o index.php).

https://www.dropbox.com/sh/lu5ywj35xonmn42/AACUHEiIdvFY4ZWROzDjK65ja?dl=0

Cumprimentos,

Sérgio Lopes



Para mais opções, acesse https://groups.google.com/d/optout.



--

Carlos Alexandre Zucolli

unread,
Jan 21, 2016, 4:20:44 PM1/21/16
to YFB - Yii Framework Brasil
Boa tarde Pessoal.

Acho que meu problema é e sempre foi o Banco de Dados.

Segui o exemplo do Sérgio e consegui fazer ele encrypt e decrypt, porém ao gravar no banco o campo fica assim:

קy

É somente isso.

Isso é um problema de charset mesmo? Já tentei alterar e não consegui.


Carlos



Cálcio

unread,
Jan 22, 2016, 5:58:21 AM1/22/16
to YFB - Yii Framework Brasil
Ve a Colletion do banco e das tabelas.
Geralmente usamos utf8_general_ci e na tabela UTF-8

Sérgio Lopes

unread,
Jan 22, 2016, 8:05:05 PM1/22/16
to yii-framew...@googlegroups.com
Eu usei campos binary para guardar os dados. Não há qualquer garantia, e é muito provável, que os bytes de dados cifrados não representem texto legível. Nem sequer tens de entender o que é guardado no banco de dados, estás a cifrar dados e não a criar hashes. As hashes são traduzidas para caracteres, os dados cifrados não.

Cumprimentos,

Sérgio Lopes


--
YFB - Yii Framework Brasil
04/2011: Anexos de até 250kb foram autorizados pelos membros da lista. Use com moderação.
---
Você recebeu essa mensagem porque está inscrito no grupo "YFB - Yii Framework Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para yii-framework-br...@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.

Carlos Alexandre Zucolli

unread,
Jan 22, 2016, 8:34:31 PM1/22/16
to yii-framew...@googlegroups.com

Mas é que não funciona e o único motivo que eu percebo é este do charset.

Pois nos exemplos que já vi apresenta senhas com muitos caracteres e só 2.

Estou tentando.

Obrigado.

Carlos


diego nunes

unread,
Jan 23, 2016, 1:55:11 PM1/23/16
to yii-framew...@googlegroups.com
Eu acompanhei a discussão e tem uma série de informações com
pequenas falhas que seriam legais de corrigir, só pra manter o tópico
como referência futura.
- Algumas pessoas já comentaram e vale repetir: cifrar uma senha é
uma prática horrível e que na maior parte das vezes não faz sentido
(salvo no caso de você precisar de credenciais para acessar um sistema
externo). Se você simplesmente quer um sistema de autenticação com
login e senha, use hashing com um bom algoritmo moderno. O bcrypt é
bom o bastante, o scrypt melhor ainda
(http://www.unlimitednovelty.com/2012/03/dont-use-bcrypt.html).
- UTF-8 não é charset, é um "encoding". O charset mais comum
codificado em UTF-8 é o Unicode, que também pode ser codificado em
outros encodings (UTF-16, por exemplo).

O charset do seu banco de dados dificilmente seria um problema no
caso de um sistema de hashing (na maior parte das vezes eles usam uma
saída simples "[a-z0-9]"). Para uma cifragem, depende do algoritmo e
dos possíveis caracteres de saída--caso ele possa cuspir caracteres de
controle ou um stream binário, seria legal ver um campo binário no
banco ou armazenar os caracteres codificados com base64.
Carlos, caso você esteja certo de que o que você precisa é uma
cifragem e não hashing (você precisa desse dado para consultar algum
outro sistema com as credenciais ou só está checando se o usuário
digitou corretamente o login e senha que estão salvos no seu banco?),
tente cuspir o output da cifragem e veja o que sai--tente cuspir um
base64_encode() da cifragem, também. Daí parta pra salvar no banco e
analise o que você recupera depois (também comparando os
base64_encode, caso sejam caracteres de controle). Caso o resultado da
cifragem tenha caracteres não legíveis já antes de ir para o banco,
provavelmente você precisa de um campo binário ou armazenar o base64
do dado.

Abraços.
> https://groups.google.com/d/msgid/yii-framework-brasil/CAF-qxagfrP4pxvjfKLfdEYAeOGTAdGCFufuiBdL2CNroQOxbmQ%40mail.gmail.com.
>
> Para mais opções, acesse https://groups.google.com/d/optout.



--
diego nunes
dnunes.com

Carlos Alexandre Zucolli

unread,
Jan 26, 2016, 8:57:24 AM1/26/16
to yii-framew...@googlegroups.com
Boa tarde Diego,

Eu encontrei este artigo do nosso amigo Thiago Belém que deixa um pouco mais claro em como usar o Bcrypt.
Agora só falta eu traduzir isso para as classes e métodos do Yii2.

Estou fazendo isso agora e te dou o resultado.

Muito obrigado.

Você está recebendo esta mensagem porque se inscreveu no grupo "YFB - Yii Framework Brasil" dos Grupos do Google.

Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para yii-framework-br...@googlegroups.com.

Cálcio

unread,
Jan 27, 2016, 9:57:51 AM1/27/16
to YFB - Yii Framework Brasil
Carlos o Yii já faz essa parte chata da criptografia e da verificação na hora do Login.
Tem isso lá no manual se não me engano

>>> Para ver essa discussão na Web, acesse
>>> https://groups.google.com/d/msgid/yii-framework-brasil/f9c3840d-73df-43bd-b9d4-982f5a0419d6%40googlegroups.com.
>>>
>>> Para mais opções, acesse https://groups.google.com/d/optout.
>>
>>
>>
>>
>> --
>> http://www.sergiolopes.eu
>> https://twitter.com/sergiomnlopes
>> http://www.linkedin.com/in/sergiomnlopes
>> Skype: sergiomnlopes
>>
>> --
>> YFB - Yii Framework Brasil
>> 04/2011: Anexos de até 250kb foram autorizados pelos membros da lista. Use
>> com moderação.
>> ---
>> Você recebeu essa mensagem porque está inscrito no grupo "YFB - Yii
>> Framework Brasil" dos Grupos do Google.
>> Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie

>> Para ver essa discussão na Web, acesse
>> https://groups.google.com/d/msgid/yii-framework-brasil/CADV2t0RTD6j9EeQk3L4bx%2B2E2jkxC1%3D2hjiaGZpFUO%3DVMs5L4A%40mail.gmail.com.
>> Para mais opções, acesse https://groups.google.com/d/optout.
>
> --
> YFB - Yii Framework Brasil
> 04/2011: Anexos de até 250kb foram autorizados pelos membros da lista. Use
> com moderação.
> ---
> Você recebeu essa mensagem porque está inscrito no grupo "YFB - Yii
> Framework Brasil" dos Grupos do Google.
> Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie

> Para ver essa discussão na Web, acesse
> https://groups.google.com/d/msgid/yii-framework-brasil/CAF-qxagfrP4pxvjfKLfdEYAeOGTAdGCFufuiBdL2CNroQOxbmQ%40mail.gmail.com.
>
> Para mais opções, acesse https://groups.google.com/d/optout.



--
diego nunes
dnunes.com

--
YFB - Yii Framework Brasil
04/2011: Anexos de até 250kb foram autorizados pelos membros da lista. Use com moderação.
---
Você está recebendo esta mensagem porque se inscreveu no grupo "YFB - Yii Framework Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para yii-framework-brasil+unsub...@googlegroups.com.

Carlos Alexandre Zucolli

unread,
Jan 29, 2016, 9:46:15 AM1/29/16
to YFB - Yii Framework Brasil
Boa tarde Pessoal

Graças a ajuda enorme de vocês consegui resolver o problema encontrado e até convencer que esta é a melhor solução.

A solução aplicada ficou na aplicação dos métodos da classe Security conforme indicado.


Inclusive sem mais problemas com o charset do banco.

Agora que foi aprovado esta solução tenho que aplicar algumas regras na hora da criação da senha, tal como ser obrigatório números, etc...
Sobre isso alguém pode me dar um caminho?

Mais uma vez obrigado a todos!


- -
Carlos

Sérgio Lopes

unread,
Jan 29, 2016, 10:50:40 AM1/29/16
to yii-framew...@googlegroups.com
Boa tarde,

Podes usar o validador "match" para uma expressão regular ou implementares um validador teu. Neste caso basta implementares um método no teu modelo e usares o nome do método na regra de validação. http://www.yiiframework.com/doc-2.0/guide-input-validation.html

Isto, juntamente com um pouco de JS no cliente para dar feedback mais depressa, deve ser suficiente.

Cumprimentos,

Sérgio Lopes



--
YFB - Yii Framework Brasil
04/2011: Anexos de até 250kb foram autorizados pelos membros da lista. Use com moderação.
---
Você recebeu essa mensagem porque está inscrito no grupo "YFB - Yii Framework Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para yii-framework-br...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/yii-framework-brasil/0cab927f-4710-46b0-9ea8-27fec7f4abc8%40googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.

Carlos Alexandre Zucolli

unread,
Jan 29, 2016, 1:19:10 PM1/29/16
to YFB - Yii Framework Brasil
Boa tarde,

Estou seguindo pelo "match", e acho que é o caminho...

Nas "rules", eu incluí:
[['password', 'match', 'pattern' => '', 'message' => 'Mensagem personalizada'],'string', 'min' => 8],

E pra gerar o pattern é que não manjo de REGEX, mas estou tentando...

As regras pro pattern são:

Pelo menos 1 número ^[0-9]{1,}
Pelo menos 1 caracter de pontuação/símbolo ^[$-/:-?{-~!"^_`\[\]]
Restante de Letras maiúscula/minúscula [a-zA-Z]

Isso dá pra gerar esse Pattern? O trem difícil de combinar! kkk

Obrigado.

- -
Carlos
Reply all
Reply to author
Forward
0 new messages