Commit 9c232e1288b9d84af75e1d20cf7add7a9b5bb9bd

Authored by Edmar Moretti
1 parent 0fa6e86d

Substituição da função md5 por função específica do php para tratamento de senhas

admin/admin.db
No preview for this file type
admin/php/login.php
@@ -289,6 +289,7 @@ function validaSessao(){ @@ -289,6 +289,7 @@ function validaSessao(){
289 function autenticaUsuario($usuario,$senha){ 289 function autenticaUsuario($usuario,$senha){
290 include(dirname(__FILE__)."/conexao.php"); 290 include(dirname(__FILE__)."/conexao.php");
291 $senhamd5 = md5($senha); 291 $senhamd5 = md5($senha);
  292 + $senhaHash = password_hash($senha, PASSWORD_DEFAULT);
292 //verifica se o usuario esta cadastrado no ms_configura.php em $i3geomaster 293 //verifica se o usuario esta cadastrado no ms_configura.php em $i3geomaster
293 //echo "select * from ".$esquemaadmin."i3geousr_usuarios where login = '$usuario' and (senha = '$senhamd5' or senha = '$senha') and ativo = 1";exit; 294 //echo "select * from ".$esquemaadmin."i3geousr_usuarios where login = '$usuario' and (senha = '$senhamd5' or senha = '$senha') and ativo = 1";exit;
294 //exit; 295 //exit;
@@ -320,13 +321,29 @@ function autenticaUsuario($usuario,$senha){ @@ -320,13 +321,29 @@ function autenticaUsuario($usuario,$senha){
320 } 321 }
321 else{ 322 else{
322 //verifica se a senha e uma string ou pode ser um md5 323 //verifica se a senha e uma string ou pode ser um md5
  324 + $ok = false;
  325 + $dados = array();
323 if(strlen($senha) == 32){ 326 if(strlen($senha) == 32){
324 - $dados = pegaDados("select * from ".$esquemaadmin."i3geousr_usuarios where login = '$usuario' and senha = '$senhamd5' and ativo = 1",$dbh,false); 327 + $dados = pegaDados("select id_usuario,nome_usuario from ".$esquemaadmin."i3geousr_usuarios where login = '$usuario' and senha = '$senhamd5' and ativo = 1",$dbh,false);
325 } 328 }
326 else{ 329 else{
327 - $dados = pegaDados("select * from ".$esquemaadmin."i3geousr_usuarios where login = '$usuario' and (senha = '$senhamd5' or senha = '$senha') and ativo = 1",$dbh,false); 330 + $dados = pegaDados("select id_usuario,nome_usuario from ".$esquemaadmin."i3geousr_usuarios where login = '$usuario' and (senha = '$senhamd5' or senha = '$senha') and ativo = 1",$dbh,false);
328 } 331 }
329 if(count($dados) > 0){ 332 if(count($dados) > 0){
  333 + $ok = true;
  334 + }
  335 + //testa tambem com a nova forma de armazenamento de senha usando password_hash
  336 + if($ok == false){
  337 + $usuarios = pegaDados("select senha,id_usuario,nome_usuario from ".$esquemaadmin."i3geousr_usuarios where login = '$usuario' and ativo = 1",$dbh,false);
  338 + foreach($usuarios as $d){
  339 + if (password_verify($d["senha"], $senhaHash)){
  340 + $ok = true;
  341 + $dados = array("id_usuario"=>$d["id_usuario"],"nome_usuario"=>$d["nome_usuario"]);
  342 + }
  343 + }
  344 + $usuarios = null;
  345 + }
  346 + if($ok == true){
330 $pa = pegaDados("select * from ".$esquemaadmin."i3geousr_papelusuario where id_usuario = ".$dados[0]["id_usuario"],$dbh,false); 347 $pa = pegaDados("select * from ".$esquemaadmin."i3geousr_papelusuario where id_usuario = ".$dados[0]["id_usuario"],$dbh,false);
331 $op = pegadados("SELECT O.codigo, PU.id_usuario FROM ".$esquemaadmin."i3geousr_operacoes AS O JOIN ".$esquemaadmin."i3geousr_operacoespapeis AS OP ON O.id_operacao = OP.id_operacao JOIN ".$esquemaadmin."i3geousr_papelusuario AS PU ON OP.id_papel = PU.id_papel WHERE id_usuario = ".$dados[0]["id_usuario"],$dbh,false); 348 $op = pegadados("SELECT O.codigo, PU.id_usuario FROM ".$esquemaadmin."i3geousr_operacoes AS O JOIN ".$esquemaadmin."i3geousr_operacoespapeis AS OP ON O.id_operacao = OP.id_operacao JOIN ".$esquemaadmin."i3geousr_papelusuario AS PU ON OP.id_papel = PU.id_papel WHERE id_usuario = ".$dados[0]["id_usuario"],$dbh,false);
332 $gr = pegadados("SELECT * from ".$esquemaadmin."i3geousr_grupousuario where id_usuario = ".$dados[0]["id_usuario"],$dbh,false); 349 $gr = pegadados("SELECT * from ".$esquemaadmin."i3geousr_grupousuario where id_usuario = ".$dados[0]["id_usuario"],$dbh,false);
admin/php/usuarios.php
@@ -65,7 +65,13 @@ error_reporting(0); @@ -65,7 +65,13 @@ error_reporting(0);
65 include_once(dirname(__FILE__)."/login.php"); 65 include_once(dirname(__FILE__)."/login.php");
66 $funcoesEdicao = array( 66 $funcoesEdicao = array(
67 "ALTERARUSUARIOS", 67 "ALTERARUSUARIOS",
68 - "EXCLUIRUSUARIO" 68 + "EXCLUIRUSUARIO",
  69 + "EXCLUIRPAPELUSUARIO",
  70 + "PEGADADOSUSUARIO",
  71 + "PEGAUSUARIOS",
  72 + "PEGAPAPEISUSUARIO",
  73 + "ENVIARSENHAEMAIL",
  74 + "LISTAPAPEIS"
69 ); 75 );
70 if(in_array(strtoupper($funcao),$funcoesEdicao)){ 76 if(in_array(strtoupper($funcao),$funcoesEdicao)){
71 if(verificaOperacaoSessao("admin/html/usuarios") == false){ 77 if(verificaOperacaoSessao("admin/html/usuarios") == false){
@@ -180,7 +186,8 @@ function alterarUsuarios() @@ -180,7 +186,8 @@ function alterarUsuarios()
180 ); 186 );
181 //se a senha foi enviada, ela sera trocada 187 //se a senha foi enviada, ela sera trocada
182 if($_GET["senha"] != ""){ 188 if($_GET["senha"] != ""){
183 - $dataCol["senha"] = md5($_GET["senha"]); 189 + //$dataCol["senha"] = md5($_GET["senha"]);
  190 + $dataCol["senha"] = password_hash($_GET["senha"], PASSWORD_DEFAULT);
184 } 191 }
185 i3GeoAdminUpdate($dbhw,"i3geousr_usuarios",$dataCol,"WHERE id_usuario = $id_usuario"); 192 i3GeoAdminUpdate($dbhw,"i3geousr_usuarios",$dataCol,"WHERE id_usuario = $id_usuario");
186 $retorna = $id_usuario; 193 $retorna = $id_usuario;
admin1/usuarios/cadastro/exec.php
@@ -204,7 +204,8 @@ function alterar($id_usuario, $ativo, $data_cadastro, $email, $login, $nome_usua @@ -204,7 +204,8 @@ function alterar($id_usuario, $ativo, $data_cadastro, $email, $login, $nome_usua
204 ); 204 );
205 // se a senha foi enviada, ela sera trocada 205 // se a senha foi enviada, ela sera trocada
206 if ($senha != "") { 206 if ($senha != "") {
207 - $dataCol ["senha"] = md5 ( $senha ); 207 + //$dataCol ["senha"] = md5 ( $senha );
  208 + $dataCol["senha"] = password_hash($_GET["senha"], PASSWORD_DEFAULT);
208 } 209 }
209 $resultado = i3GeoAdminUpdate ( $dbhw, "i3geousr_usuarios", $dataCol, "WHERE id_usuario = $id_usuario" ); 210 $resultado = i3GeoAdminUpdate ( $dbhw, "i3geousr_usuarios", $dataCol, "WHERE id_usuario = $id_usuario" );
210 if ($resultado === false) { 211 if ($resultado === false) {
admin1/usuarios/operacoes/exec.php
@@ -105,7 +105,13 @@ switch ($funcao) @@ -105,7 +105,13 @@ switch ($funcao)
105 exit; 105 exit;
106 } 106 }
107 $operacao = $operacoes[0]; 107 $operacao = $operacoes[0];
108 - $operacao["papeis"] = $papeisoperacao[0]; 108 +
  109 + //cria o indice do array conforme o id da operacao
  110 + $o = array();
  111 + foreach($papeisoperacao as $op){
  112 + $o[$op["id_papel"]] = $op;
  113 + }
  114 + $operacao["papeis"] = $o;
109 //todos os papeis 115 //todos os papeis
110 $papeis = pegaDados("SELECT * from ".$esquemaadmin."i3geousr_papeis order by nome",$dbh); 116 $papeis = pegaDados("SELECT * from ".$esquemaadmin."i3geousr_papeis order by nome",$dbh);
111 $dbhw = null; 117 $dbhw = null;
admin1/usuarios/operacoes/index.js
@@ -28,6 +28,8 @@ i3GEOadmin.operacoes = { @@ -28,6 +28,8 @@ i3GEOadmin.operacoes = {
28 ondeLista: "", 28 ondeLista: "",
29 //conteudo html do formulario de adicao de operacao 29 //conteudo html do formulario de adicao de operacao
30 formAdiciona: "", 30 formAdiciona: "",
  31 + //parametros obtidos do formulario de edicao antes de abrir o modal de confirmacao
  32 + parametrosSalvar: "",
31 /* 33 /*
32 Function: initMenu 34 Function: initMenu
33 35
@@ -147,7 +149,7 @@ Obtém a lista de operacoes @@ -147,7 +149,7 @@ Obtém a lista de operacoes
147 "onSalvar": "i3GEOadmin.operacoes.salvarDialogo",//funcao 149 "onSalvar": "i3GEOadmin.operacoes.salvarDialogo",//funcao
148 "inputPapeis": function(){ 150 "inputPapeis": function(){
149 //marca os checkbox 151 //marca os checkbox
150 - var p = this.papeis; 152 + var p = json["operacao"]["papeis"];
151 $(json["papeis"]).each( 153 $(json["papeis"]).each(
152 function(i,el){ 154 function(i,el){
153 if(p && el.id_papel && (p[el.id_papel] || el.id_papel == 1)){ 155 if(p && el.id_papel && (p[el.id_papel] || el.id_papel == 1)){
@@ -236,35 +238,40 @@ Obtém a lista de operacoes @@ -236,35 +238,40 @@ Obtém a lista de operacoes
236 ); 238 );
237 }, 239 },
238 salvarDialogo: function(id){ 240 salvarDialogo: function(id){
  241 + //os dados do formulario sao obtidos antes de abrir o modal
  242 + i3GEOadmin.operacoes.parametrosSalvar = $("#form-edicao-" + id).serialize();
239 var hash = { 243 var hash = {
240 "mensagem": i3GEOadmin.operacoes.dicionario.confirma, 244 "mensagem": i3GEOadmin.operacoes.dicionario.confirma,
241 "onBotao1": "i3GEOadmin.operacoes.salvar('"+id+"')", 245 "onBotao1": "i3GEOadmin.operacoes.salvar('"+id+"')",
242 "botao1": i3GEOadmin.operacoes.dicionario.sim, 246 "botao1": i3GEOadmin.operacoes.dicionario.sim,
243 - "onBotao2": "i3GEOadmin.core.fechaModalConfirma();", 247 + "onBotao2": "i3GEOadmin.operacoes.parametrosSalvar = '';i3GEOadmin.core.fechaModalConfirma();",
244 "botao2": i3GEOadmin.operacoes.dicionario.nao 248 "botao2": i3GEOadmin.operacoes.dicionario.nao
245 }; 249 };
246 i3GEOadmin.core.abreModalConfirma(hash); 250 i3GEOadmin.core.abreModalConfirma(hash);
247 }, 251 },
248 salvar: function(id){ 252 salvar: function(id){
249 - var parametros = $("#form-" + id + " form").serialize(); 253 + var parametros = i3GEOadmin.operacoes.parametrosSalvar;
  254 + i3GEOadmin.operacoes.parametrosSalvar = "";
250 i3GEOadmin.core.fechaModalGeral(); 255 i3GEOadmin.core.fechaModalGeral();
251 - i3GEOadmin.core.modalAguarde(true);  
252 - $.post(  
253 - "exec.php?funcao=alterar",  
254 - "id_operacao="+ id +"&"+parametros  
255 - )  
256 - .done(  
257 - function(data, status){  
258 - i3GEOadmin.core.modalAguarde(false);  
259 - i3GEOadmin.core.iconeAguarde(i3GEOadmin.operacoes.ondeLista);  
260 - i3GEOadmin.operacoes.lista();  
261 - }  
262 - )  
263 - .fail(  
264 - function(data){  
265 - i3GEOadmin.core.modalAguarde(false);  
266 - i3GEOadmin.core.mostraErro(data.status + " " +data.statusText);  
267 - }  
268 - ); 256 + if(parametros != ""){
  257 + i3GEOadmin.core.modalAguarde(true);
  258 + $.post(
  259 + "exec.php?funcao=alterar",
  260 + "id_operacao="+ id +"&"+parametros
  261 + )
  262 + .done(
  263 + function(data, status){
  264 + i3GEOadmin.core.modalAguarde(false);
  265 + i3GEOadmin.core.iconeAguarde(i3GEOadmin.operacoes.ondeLista);
  266 + i3GEOadmin.operacoes.lista();
  267 + }
  268 + )
  269 + .fail(
  270 + function(data){
  271 + i3GEOadmin.core.modalAguarde(false);
  272 + i3GEOadmin.core.mostraErro(data.status + " " +data.statusText);
  273 + }
  274 + );
  275 + }
269 } 276 }
270 }; 277 };
admin1/usuarios/operacoes/index.php
@@ -57,7 +57,7 @@ include "../../head.php"; @@ -57,7 +57,7 @@ include "../../head.php";
57 <option value="form-{{id_operacao}}">{{{codigo}}}</option> 57 <option value="form-{{id_operacao}}">{{{codigo}}}</option>
58 </script> 58 </script>
59 <script id="templateFormLista" type="x-tmpl-mustache"> 59 <script id="templateFormLista" type="x-tmpl-mustache">
60 -<form style="" action="#" onsubmit="{{onSalvar}}('{{id_operacao}}');return false;" onchange="this.style.boxShadow='2px 2px 5px 0 #009688';" class="form-horizontal" role="form" method="post" > 60 +<form id="form-edicao-{{id_operacao}}" style="" action="#" onsubmit="{{onSalvar}}('{{id_operacao}}');return false;" onchange="this.style.boxShadow='2px 2px 5px 0 #009688';" class="form-horizontal" role="form" method="post" >
61 <div class="row"> 61 <div class="row">
62 <div class="col-md-4" > 62 <div class="col-md-4" >
63 <h4> {{{papeisv}}}</h4> 63 <h4> {{{papeisv}}}</h4>