Commit 7a6bb6c0a2eada65eacc3e569fa7ec213baa92e6

Authored by Edmar Moretti
1 parent a9f1c1c0
Exists in master

correção de segurança

Showing 1 changed file with 20 additions and 12 deletions   Show diff stats
classesphp/pega_variaveis.php
@@ -4,23 +4,23 @@ Title: pega_variaveis.php @@ -4,23 +4,23 @@ Title: pega_variaveis.php
4 4
5 Processa os arrays $_GET e $_POST, transformando-os em variáveis conforme as chaves. 5 Processa os arrays $_GET e $_POST, transformando-os em variáveis conforme as chaves.
6 6
7 -Deve ser incluído sempre no início dos programas em PHP utilizados pelo i3Geo, evitando que o parâmetro "REGISTER_GLOBALS" 7 +Deve ser incluído sempre no início dos programas em PHP utilizados pelo i3Geo, evitando que o parâmetro "REGISTER_GLOBALS"
8 do PHP precise ser definido como "On". 8 do PHP precise ser definido como "On".
9 9
10 No caso do uso de POST do lado cliente com a biblioteca CPAINT, é feito o processamento 10 No caso do uso de POST do lado cliente com a biblioteca CPAINT, é feito o processamento
11 dos argumentos definidos na chamada call. Para fazer a chamada utilizando-se POST, deve-se seguir o exemplo abaixo: 11 dos argumentos definidos na chamada call. Para fazer a chamada utilizando-se POST, deve-se seguir o exemplo abaixo:
12 12
13 var cp = new cpaint(); 13 var cp = new cpaint();
14 - 14 +
15 cp.set_response_type("JSON"); 15 cp.set_response_type("JSON");
16 - 16 +
17 cp.set_transfer_mode("POST"); 17 cp.set_transfer_mode("POST");
18 - 18 +
19 var p = g_locaplic+"/classesphp/mapa_controle.php?g_sid="+g_sid; 19 var p = g_locaplic+"/classesphp/mapa_controle.php?g_sid="+g_sid;
20 - 20 +
21 cp.call(p,"criaSHPvazio",ativanovotema,"funcao=criashpvazio,tema=teste"); 21 cp.call(p,"criaSHPvazio",ativanovotema,"funcao=criashpvazio,tema=teste");
22 -  
23 - 22 +
  23 +
24 O parâmetro "funcao=criashpvazio,tema=teste" será transformado em variáveis, ou seja, 24 O parâmetro "funcao=criashpvazio,tema=teste" será transformado em variáveis, ou seja,
25 25
26 $funcao = "v"; 26 $funcao = "v";
@@ -44,7 +44,7 @@ Este programa é distribuído na expectativa de que seja útil @@ -44,7 +44,7 @@ Este programa é distribuído na expectativa de que seja útil
44 porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita 44 porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita
45 de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. 45 de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA.
46 Consulte a Licença Pública Geral do GNU para mais detalhes. 46 Consulte a Licença Pública Geral do GNU para mais detalhes.
47 -Você deve ter recebido uma cópia da Licença Pública Geral do 47 +Você deve ter recebido uma c�pia da Licença Pública Geral do
48 GNU junto com este programa; se não, escreva para a 48 GNU junto com este programa; se não, escreva para a
49 Free Software Foundation, Inc., no endereço 49 Free Software Foundation, Inc., no endereço
50 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. 50 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
@@ -56,12 +56,16 @@ i3geo/classesphp/pega_variaveis.php @@ -56,12 +56,16 @@ i3geo/classesphp/pega_variaveis.php
56 //echo "<pre>"; 56 //echo "<pre>";
57 //var_dump($_POST);exit; 57 //var_dump($_POST);exit;
58 error_reporting(0); 58 error_reporting(0);
  59 +$bl = array("_decode","php","eval","passthru","shell_exec","escapeshellarg","escapeshellcmd","proc_close","proc_open","dl","popen","contents","delete","drop","update","insert","exec","system",";");
59 if (isset($_GET)) 60 if (isset($_GET))
60 { 61 {
61 foreach(array_keys($_GET) as $k) 62 foreach(array_keys($_GET) as $k)
62 { 63 {
  64 + $k = str_ireplace($bl,"",$k);
  65 + $k = filter_var($k, FILTER_SANITIZE_STRING);
63 if ($_GET[$k] != "''"){ 66 if ($_GET[$k] != "''"){
64 $v = strip_tags($_GET[$k]); 67 $v = strip_tags($_GET[$k]);
  68 + $v = str_ireplace($bl,"",$v);
65 eval("\$".$k."='".(trim($v))."';"); 69 eval("\$".$k."='".(trim($v))."';");
66 } 70 }
67 } 71 }
@@ -72,8 +76,12 @@ if (isset($_POST)) @@ -72,8 +76,12 @@ if (isset($_POST))
72 //var_dump($_POST);exit; 76 //var_dump($_POST);exit;
73 foreach(array_keys($_POST) as $k) 77 foreach(array_keys($_POST) as $k)
74 { 78 {
  79 + $k = str_ireplace($bl,"",$k);
  80 + $k = filter_var($k, FILTER_SANITIZE_STRING);
  81 + $_POST[$k] = str_ireplace($bl,"",$_POST[$k]);
75 if (($_POST[$k] != "''")) 82 if (($_POST[$k] != "''"))
76 eval("\$".$k."='".(strip_tags(trim($_POST[$k])))."';"); 83 eval("\$".$k."='".(strip_tags(trim($_POST[$k])))."';");
  84 +
77 if (($_POST[$k] != "''") && ($k == "cpaint_argument")) 85 if (($_POST[$k] != "''") && ($k == "cpaint_argument"))
78 { 86 {
79 foreach($_POST["cpaint_argument"] as $argumento_) 87 foreach($_POST["cpaint_argument"] as $argumento_)
@@ -86,19 +94,19 @@ if (isset($_POST)) @@ -86,19 +94,19 @@ if (isset($_POST))
86 $argumento_ = implode("&",$argumento_); 94 $argumento_ = implode("&",$argumento_);
87 $parametros_ = explode("&",$argumento_); 95 $parametros_ = explode("&",$argumento_);
88 foreach($parametros_ as $parametro_) 96 foreach($parametros_ as $parametro_)
89 - { 97 + {
90 $p_ = explode("=",$parametro_); 98 $p_ = explode("=",$parametro_);
91 $parametro = $p_[0]; 99 $parametro = $p_[0];
92 $p_ = array_slice($p_, 1, count($p_)); 100 $p_ = array_slice($p_, 1, count($p_));
93 $valor_ = implode("=",$p_); 101 $valor_ = implode("=",$p_);
94 - 102 +
95 if($parametro != ""){ 103 if($parametro != ""){
96 $valor_ = str_replace("'","*#*",$valor_); 104 $valor_ = str_replace("'","*#*",$valor_);
97 eval("\$".$parametro."='".(trim($valor_))."';"); 105 eval("\$".$parametro."='".(trim($valor_))."';");
98 eval("\$".$parametro."=str_replace('*#*','\'',\$".$parametro.");"); 106 eval("\$".$parametro."=str_replace('*#*','\'',\$".$parametro.");");
99 - } 107 + }
100 } 108 }
101 - } 109 + }
102 } 110 }
103 } 111 }
104 } 112 }