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