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 | 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 | } | ... | ... |