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 4  
5 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 8 do PHP precise ser definido como "On".
9 9  
10 10 No caso do uso de POST do lado cliente com a biblioteca CPAINT, é feito o processamento
11 11 dos argumentos definidos na chamada call. Para fazer a chamada utilizando-se POST, deve-se seguir o exemplo abaixo:
12 12  
13 13 var cp = new cpaint();
14   -
  14 +
15 15 cp.set_response_type("JSON");
16   -
  16 +
17 17 cp.set_transfer_mode("POST");
18   -
  18 +
19 19 var p = g_locaplic+"/classesphp/mapa_controle.php?g_sid="+g_sid;
20   -
  20 +
21 21 cp.call(p,"criaSHPvazio",ativanovotema,"funcao=criashpvazio,tema=teste");
22   -
23   -
  22 +
  23 +
24 24 O parâmetro "funcao=criashpvazio,tema=teste" será transformado em variáveis, ou seja,
25 25  
26 26 $funcao = "v";
... ... @@ -44,7 +44,7 @@ Este programa é distribuído na expectativa de que seja útil
44 44 porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita
45 45 de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA.
46 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 48 GNU junto com este programa; se não, escreva para a
49 49 Free Software Foundation, Inc., no endereço
50 50 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
... ... @@ -56,12 +56,16 @@ i3geo/classesphp/pega_variaveis.php
56 56 //echo "<pre>";
57 57 //var_dump($_POST);exit;
58 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 60 if (isset($_GET))
60 61 {
61 62 foreach(array_keys($_GET) as $k)
62 63 {
  64 + $k = str_ireplace($bl,"",$k);
  65 + $k = filter_var($k, FILTER_SANITIZE_STRING);
63 66 if ($_GET[$k] != "''"){
64 67 $v = strip_tags($_GET[$k]);
  68 + $v = str_ireplace($bl,"",$v);
65 69 eval("\$".$k."='".(trim($v))."';");
66 70 }
67 71 }
... ... @@ -72,8 +76,12 @@ if (isset($_POST))
72 76 //var_dump($_POST);exit;
73 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 82 if (($_POST[$k] != "''"))
76 83 eval("\$".$k."='".(strip_tags(trim($_POST[$k])))."';");
  84 +
77 85 if (($_POST[$k] != "''") && ($k == "cpaint_argument"))
78 86 {
79 87 foreach($_POST["cpaint_argument"] as $argumento_)
... ... @@ -86,19 +94,19 @@ if (isset($_POST))
86 94 $argumento_ = implode("&",$argumento_);
87 95 $parametros_ = explode("&",$argumento_);
88 96 foreach($parametros_ as $parametro_)
89   - {
  97 + {
90 98 $p_ = explode("=",$parametro_);
91 99 $parametro = $p_[0];
92 100 $p_ = array_slice($p_, 1, count($p_));
93 101 $valor_ = implode("=",$p_);
94   -
  102 +
95 103 if($parametro != ""){
96 104 $valor_ = str_replace("'","*#*",$valor_);
97 105 eval("\$".$parametro."='".(trim($valor_))."';");
98 106 eval("\$".$parametro."=str_replace('*#*','\'',\$".$parametro.");");
99   - }
  107 + }
100 108 }
101   - }
  109 + }
102 110 }
103 111 }
104 112 }
... ...