Commit 7a6bb6c0a2eada65eacc3e569fa7ec213baa92e6
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 | } |