Ambiente restrito no Flex - Usando segurança na senha

Bha, quem que não teve problemas de perder a senha . . . Ou fez um sistema para empresa preocupada com senhas. Desenvolvo sistemas para empresas que usam HTTPS até para páginas HTML puras sem acesso restrito. Exagero?

Então além de um sistema simples de Login acrescentei um extra. Estou criptografando o login e senha antes de ser enviado para o PHP. E no PHP envio para o MySql para comparar com as demais senhas existente no banco.

Veja no exemplo abaixo que após o click no botão, é feita uma chamada ao amfphp através de RemoteObject. O que envio para o PHP é o hash do MD5.

Arquivo post078.mxml
private function logon():void
{
    var remoteObj:RemoteObject = new RemoteObject("RemotingMessage");
    remoteObj.source = "078.login";
    remoteObj.showBusyCursor = true;

    remoteObj.addEventListener(ResultEvent.RESULT, fncOk);
    remoteObj.addEventListener(FaultEvent.FAULT, fncFalha);
    //MD5.hash

    var hash:String = MD5.hash(tiLogin.text + tiSenha.text);
    remoteObj.getOperation("logar").send(hash);
}
. . . .
<mx:Form x="0" y="0" >
    <mx:FormItem label="Login:">
        <mx:TextInput id="tiLogin"/>
    </mx:FormItem>
    <mx:FormItem label="Senha:">
        <mx:TextInput id="tiSenha"/>
    </mx:FormItem>
    <mx:FormItem>
        <mx:Button label="Logon" click="logon()"/>
    </mx:FormItem>
</mx:Form>

Veja que na clase PHP não estou descriptografando, e sim criptografando o que possuo no banco de dados. Mesmo assim, devolvo um hash para que seja muito complicado alguém burlar a tela do logim com um servidor de Proxy ou manipulação de dados HTTP.

Arquivoamfphp/services/078/login.php
class login
{
    function logar($login)
    {
        mysql_pconnect(DB_HOST, DB_USER, DB_PASS);
        mysql_select_db(DB_NAME);

        $query = "SELECT *  FROM `078_usuario` ".
                 "WHERE MD5(CONCAT(`USUARIO_LOGIN`, `USUARIO_SENHA`)) LIKE '" . $login . "'";
        $result = mysql_query($query);
        if(mysql_num_rows($result) == 1)
        {
            $row = mysql_fetch_array($result);
            return array($row['USUARIO_ID'], md5($row['USUARIO_ID'] . "string"));
        }
        return '';
    }
}

Abaixo segue um exemplo.

login = kraus
senha = demo

Espero que apreciem o código fonte.

Fique por dentro de nossas novidades, ideias e atualizações