Como criptografar a senha antes da publicação do formulário de login?

Tenho um formulário de Login no yii que exigiu o username e a password . Meu problema é que a senha é texto simples, portanto, pode causar problemas de segurança. Para isso, tenho uma senha md5 antes de enviar o formulário via ajax

 
beginWidget('CActiveForm', array( 'id'=>'login-form', 'enableAjaxValidation'=>true, )); ?>

Fields with * are required.

labelEx($model,'username'); ?> textField($model,'username'); ?> error($model,'username'); ?>
labelEx($model,'password'); ?> passwordField($model,'password'); ?> error($model,'password'); ?>

Hint: You may login with demo/demo.

checkBox($model,'rememberMe'); ?> label($model,'rememberMe'); ?> error($model,'rememberMe'); ?>
'submit')); ?>
endWidget(); ?>
$("#submit").click(function(){ var password = $("#LoginForm_password").val(); $.ajax({ type: 'POST', url: 'createUrl("user/encrptpassword")?>', data: {'password': password}, success:function(data){ $("#LoginForm_password").val(data); } }); public function actionEncrptpassword(){ echo md5($_POST['password']); }

Mas isso também não é seguro porque os dados do post do ajax também são visíveis na inspeção.

Por favor, deixe-me saber como posso encrpt minha senha antes de enviar o formulário

Use o SSL, esse é o ponto principal disso. http://clouldflare.com oferece SSL grátis para qualquer domínio.

Dê uma olhada no GPG. Você gera um par de chaves: público e privado.

  1. Você usa a chave pública para criptografar a senha do usuário com javascript no lado do cliente: https://github.com/openpgpjs/openpgpjs

  2. Então você deve usar sua chave privada para descriptografar a mensagem no lado do servidor: http://php.net/manual/ru/book.gnupg.php

Aviso: a biblioteca do lado do cliente depende do navegador de um usuário e pode ser buggy. Use-o se você puder controlar isso.

Para evitar o ataque de repetição, você pode usar um token random e armazená-lo na session do usuário. Você exibi-lo no formulário de login, agarrá-lo para hashing no lado do cliente e usá-lo para validação no lado do servidor da session do usuário. Esta e outras opções são descritas na página wiki.