Commit db39e2afc9c734bf1f3c5c4f607bdb48c70497d5

Authored by Edmar Moretti
1 parent 34ecf597

--no commit message

admin/admin.db
No preview for this file type
admin/php/admin.php
... ... @@ -60,6 +60,19 @@ if(!empty($esquemaadmin)){
60 60 }
61 61  
62 62 /*
  63 + * Testa se os elementos de um array sao numericos
  64 + * Utilizado para evitar injecao de SQL
  65 + */
  66 +function testaNumerico($valores){
  67 + foreach ($valores as $valor) {
  68 + if(!empty($valor) && !is_numeric($valor)) {
  69 + echo "valor nao numerico";
  70 + exit;
  71 + }
  72 + }
  73 +}
  74 +
  75 +/*
63 76 Function: retornaJSON
64 77  
65 78 Converte um array em um objeto do tipo JSON utilizando a biblioteca CPAINT
... ... @@ -107,7 +120,7 @@ function retornaJSON($obj)
107 120 /*
108 121 Function: verificaDuplicados
109 122  
110   -Verifica se o resultado de um SQL retoena mais de um registro
  123 +Verifica se o resultado de um SQL retorna mais de um registro
111 124  
112 125 Parametros:
113 126  
... ... @@ -481,4 +494,4 @@ function mapfilebase($base,$locaplic){
481 494 }
482 495 return $f;
483 496 }
484   -?>
485 497 \ No newline at end of file
  498 +?>
... ...
admin/php/classe_metaestat.php
... ... @@ -183,6 +183,8 @@ class Metaestat{
183 183 * @return Array
184 184 */
185 185 function execSQL($sql,$id="",$convTexto=true){
  186 + $buscar = array("drop","update","insert","delete");
  187 + $sql = str_ireplace($buscar,"",$sql);
186 188 try {
187 189 $q = $this->dbh->query($sql,PDO::FETCH_ASSOC);
188 190 }
... ... @@ -223,6 +225,8 @@ class Metaestat{
223 225 * @return resultado de execSQL
224 226 */
225 227 function execSQLDB($codigo_estat_conexao,$sql){
  228 + $buscar = array("drop","update","insert","delete");
  229 + $sql = str_ireplace($buscar,"",$sql);
226 230 $c = $this->listaConexao($codigo_estat_conexao,true);
227 231 $dbhold = $this->dbh;
228 232 $dbh = new PDO('pgsql:dbname='.$c["bancodedados"].';user='.$c["usuario"].';password='.$c["senha"].';host='.$c["host"].';port='.$c["porta"]);
... ... @@ -257,6 +261,7 @@ class Metaestat{
257 261 * @param id do registro que sera selecionado e excluido
258 262 */
259 263 function excluirRegistro($tabela,$coluna,$id){
  264 + $this->testaNumerico(array($id));
260 265 try {
261 266 $this->dbhw->query("DELETE from ".$this->esquemaadmin.$tabela." WHERE $coluna = $id");
262 267 return "ok";
... ... @@ -271,6 +276,7 @@ class Metaestat{
271 276 * @param id da fonte
272 277 */
273 278 function excluirFonteinfoMedida($id_medida_variavel,$id_fonteinfo){
  279 + $this->testaNumerico(array($id_medida_variavel,$id_fonteinfo));
274 280 try {
275 281 $this->dbhw->query("DELETE from ".$this->esquemaadmin."i3geoestat_fonteinfo_medida WHERE id_medida_variavel = $id_medida_variavel and id_fonteinfo = $id_fonteinfo");
276 282 return "ok";
... ... @@ -481,7 +487,10 @@ class Metaestat{
481 487 }
482 488 //adiciona a coluna com os valores no inicio do array()
483 489 $colunasSemGeo = array_merge(array($dados["colunavalor"]),$colunasSemGeo);
484   -
  490 + $buscar = array("drop","update","insert","create","alter","delete");
  491 + $sql = str_ireplace($buscar,"",$sql);
  492 + $sqlagrupamento = str_ireplace($buscar,"",$sqlagrupamento);
  493 + $sqlgeo = str_ireplace($buscar,"",$sqlgeo);
485 494 return array(
486 495 "nomeregiao"=>$dadosgeo["colunanomeregiao"],
487 496 "titulo"=>$titulo,
... ... @@ -944,28 +953,12 @@ class Metaestat{
944 953 */
945 954 function dadosMedidaVariavel($id_medida_variavel,$filtro="",$todasascolunas = 0,$agruparpor = "",$limite=""){
946 955 set_time_limit(0);
947   - $sql = $this->sqlMedidaVariavel($id_medida_variavel,$todasascolunas,$agruparpor);
  956 + $sql = $this->sqlMedidaVariavel($id_medida_variavel,$todasascolunas,$agruparpor,"polygon","",false,$filtro);
948 957 $sqlf = $sql["sqlmapserver"];
949 958 //remove marcadores geo
950 959 $sqlf = explode("/*SE*/",$sqlf);
951 960 $sqlf = explode("/*SG*/",$sqlf[1]);
952 961 $sqlf = $sqlf[0]." ".$sqlf[2];
953   - if($filtro != ""){
954   - $sqlf = str_replace("__filtro__"," AND ".$filtro,$sqlf);
955   - }
956   - else{
957   - $sqlf = str_replace("__filtro__"," ",$sqlf);
958   - }
959   - /*
960   - if($sql["filtro"] == true){
961   - if(!empty($filtro)){
962   - $sqlf = $sqlf." AND ".$filtro;
963   - }
964   - }
965   - elseif(!empty($filtro)){
966   - $sqlf .= " WHERE ".$filtro;
967   - }
968   - * */
969 962 if($limite != ""){
970 963 $sqlf .= " limit ".$limite;
971 964 }
... ... @@ -1120,6 +1113,7 @@ class Metaestat{
1120 1113 $titulo = utf8_encode($titulo);
1121 1114 }
1122 1115 if($id_mapa != ""){
  1116 + $this->testaNumerico(array($id_mapa));
1123 1117 $this->dbhw->query("UPDATE ".$this->esquemaadmin."i3geoestat_mapa SET titulo='$titulo',template='$template',logoesquerdo='$logoesquerdo',logodireito='$logodireito',publicado='$publicado' WHERE id_mapa = $id_mapa");
1124 1118 $retorna = $id_mapa;
1125 1119 }
... ... @@ -1142,6 +1136,7 @@ class Metaestat{
1142 1136 * @return id do grupo
1143 1137 */
1144 1138 function alteraMapaGrupo($id_mapa,$id_mapa_grupo="",$titulo=""){
  1139 + $this->testaNumerico(array($id_mapa,$id_mapa_grupo));
1145 1140 try {
1146 1141 if($this->convUTF){
1147 1142 $titulo = utf8_encode($titulo);
... ... @@ -1172,6 +1167,7 @@ class Metaestat{
1172 1167 * @return id do tema
1173 1168 */
1174 1169 function alteraMapaTema($id_mapa_grupo,$id_mapa_tema="",$titulo="",$id_medida_variavel=""){
  1170 + $this->testaNumerico(array($id_mapa_grupo,$id_mapa_tema,$id_medida_variavel));
1175 1171 try {
1176 1172 if($this->convUTF){
1177 1173 $titulo = utf8_encode($titulo);
... ... @@ -1202,6 +1198,7 @@ class Metaestat{
1202 1198 * @return id da variavel
1203 1199 */
1204 1200 function alteraVariavel($codigo_variavel="",$nome="",$descricao=""){
  1201 + $this->testaNumerico(array($codigo_variavel));
1205 1202 try {
1206 1203 if($this->convUTF){
1207 1204 $nome = utf8_encode($nome);
... ... @@ -1240,6 +1237,7 @@ class Metaestat{
1240 1237 * @return id da medida
1241 1238 */
1242 1239 function alteraMedidaVariavel($codigo_variavel,$id_medida_variavel="",$codigo_unidade_medida,$codigo_tipo_periodo,$codigo_tipo_regiao,$codigo_estat_conexao,$esquemadb,$tabela,$colunavalor,$colunaidgeo,$colunaidunico,$filtro,$nomemedida){
  1240 + $this->testaNumerico(array($codigo_variavel,$id_medida_variavel,$codigo_unidade_medida,$codigo_tipo_periodo,$codigo_tipo_regiao,$codigo_estat_conexao));
1243 1241 try {
1244 1242 if($id_medida_variavel != ""){
1245 1243 if($this->convUTF){
... ... @@ -1271,6 +1269,7 @@ class Metaestat{
1271 1269 * @return id do link
1272 1270 */
1273 1271 function alteraLinkMedida($id_medida_variavel,$id_link="",$nome,$link){
  1272 + $this->testaNumerico(array($id_medida_variavel,$id_link));
1274 1273 try {
1275 1274 if($id_link != ""){
1276 1275 if($this->convUTF){
... ... @@ -1301,6 +1300,7 @@ class Metaestat{
1301 1300 * @return id da fonte
1302 1301 */
1303 1302 function alteraFonteinfo($id_fonteinfo="",$titulo,$link){
  1303 + $this->testaNumerico(array($id_fonteinfo));
1304 1304 try {
1305 1305 if($id_fonteinfo != ""){
1306 1306 if($this->convUTF){
... ... @@ -1325,6 +1325,7 @@ class Metaestat{
1325 1325 */
1326 1326 function adicinaFonteinfoMedida($id_medida_variavel,$id_fonteinfo){
1327 1327 //echo "INSERT INTO ".$this->esquemaadmin."i3geoestat_fonteinfo_medida (id_medida_variavel,id_fonteinfo) VALUES ('$id_medida_variavel','$id_fonteinfo')";exit;
  1328 + $this->testaNumerico(array($id_medida_variavel,$id_fonteinfo));
1328 1329 $this->dbhw->query("INSERT INTO ".$this->esquemaadmin."i3geoestat_fonteinfo_medida (id_medida_variavel,id_fonteinfo) VALUES ('$id_medida_variavel','$id_fonteinfo')");
1329 1330 }
1330 1331 /**
... ... @@ -1339,6 +1340,7 @@ class Metaestat{
1339 1340 * @return id da unidade
1340 1341 */
1341 1342 function alteraUnidadeMedida($codigo_unidade_medida,$nome,$sigla,$permitesoma,$permitemedia){
  1343 + $this->testaNumerico(array($codigo_unidade_medida));
1342 1344 try {
1343 1345 if($codigo_unidade_medida != ""){
1344 1346 if($this->convUTF){
... ... @@ -1365,6 +1367,7 @@ class Metaestat{
1365 1367 * @return codigo do tipo de periodo
1366 1368 */
1367 1369 function alteraTipoPeriodo($codigo_tipo_periodo,$nome,$descricao){
  1370 + $this->testaNumerico(array($codigo_tipo_periodo));
1368 1371 try {
1369 1372 if($codigo_tipo_periodo != ""){
1370 1373 if($this->convUTF){
... ... @@ -1396,6 +1399,7 @@ class Metaestat{
1396 1399 * @return id da conexao
1397 1400 */
1398 1401 function alteraConexao($codigo_estat_conexao,$bancodedados,$host,$porta,$usuario){
  1402 + $this->testaNumerico(array($codigo_estat_conexao));
1399 1403 try {
1400 1404 if($codigo_estat_conexao != ""){
1401 1405 $this->dbhw->query("UPDATE ".$this->esquemaadmin."i3geoestat_conexao SET usuario = '$usuario',porta = '$porta',host = '$host',bancodedados = '$bancodedados' WHERE codigo_estat_conexao = $codigo_estat_conexao");
... ... @@ -1433,6 +1437,7 @@ class Metaestat{
1433 1437 * @return id da regiao
1434 1438 */
1435 1439 function alteraTipoRegiao($codigo_tipo_regiao,$nome_tipo_regiao,$descricao_tipo_regiao,$esquemadb,$tabela,$colunageo,$colunacentroide,$data,$identificador,$colunanomeregiao,$srid,$codigo_estat_conexao,$colunasvisiveis,$apelidos){
  1440 + $this->testaNumerico(array($codigo_tipo_regiao,$codigo_estat_conexao));
1436 1441 try {
1437 1442 if($codigo_tipo_regiao != ""){
1438 1443 if($this->convUTF){
... ... @@ -1463,6 +1468,7 @@ class Metaestat{
1463 1468 * @return id
1464 1469 */
1465 1470 function alteraAgregaRegiao($codigo_tipo_regiao,$id_agregaregiao="",$codigo_tipo_regiao_pai="",$colunaligacao_regiaopai=""){
  1471 + $this->testaNumerico(array($codigo_tipo_regiao,$id_agregaregiao,$codigo_tipo_regiao_pai));
1466 1472 try {
1467 1473 if($id_agregaregiao != ""){
1468 1474 $this->dbhw->query("UPDATE ".$this->esquemaadmin."i3geoestat_agregaregiao SET colunaligacao_regiaopai = '$colunaligacao_regiaopai', codigo_tipo_regiao_pai = '$codigo_tipo_regiao_pai' WHERE id_agregaregiao = $id_agregaregiao");
... ... @@ -1492,6 +1498,7 @@ class Metaestat{
1492 1498 * @return id do parametro
1493 1499 */
1494 1500 function alteraParametroMedida($id_medida_variavel,$id_parametro_medida="",$nome,$descricao,$coluna,$id_pai,$tipo="0"){
  1501 + $this->testaNumerico(array($id_medida_variavel,$id_parametro_medida,$id_pai));
1495 1502 try {
1496 1503 if($id_parametro_medida != ""){
1497 1504 if($this->convUTF){
... ... @@ -1525,6 +1532,7 @@ class Metaestat{
1525 1532 * @return id
1526 1533 */
1527 1534 function alteraClassificacaoMedida($id_medida_variavel,$id_classificacao="",$nome="",$observacao=""){
  1535 + $this->testaNumerico(array($id_medida_variavel,$id_classificacao));
1528 1536 try {
1529 1537 if($id_classificacao != ""){
1530 1538 if($this->convUTF){
... ... @@ -1563,6 +1571,7 @@ class Metaestat{
1563 1571 * @return id
1564 1572 */
1565 1573 function alteraClasseClassificacao($id_classificacao,$id_classe="",$titulo="",$expressao="",$vermelho="",$verde="",$azul="",$tamanho="",$simbolo="",$overmelho="",$overde="",$oazul="",$otamanho=""){
  1574 + $this->testaNumerico(array($id_classificacao,$id_classe));
1566 1575 try {
1567 1576 if($id_classe != ""){
1568 1577 if($this->convUTF){
... ... @@ -2135,26 +2144,31 @@ class Metaestat{
2135 2144 * @return execSQLDB
2136 2145 */
2137 2146 function alteraNomeColunaDB($codigo_estat_conexao,$nome_esquema,$nome_tabela,$nome_coluna,$novonome_coluna){
2138   - $res = $this->execSQLDB($codigo_estat_conexao,"ALTER TABLE ".$nome_esquema.".".$nome_tabela." RENAME COLUMN $nome_coluna TO ".$novonome_coluna );
  2147 + $c = $this->listaConexao($codigo_estat_conexao,true);
  2148 + $dbh = new PDO('pgsql:dbname='.$c["bancodedados"].';user='.$c["usuario"].';password='.$c["senha"].';host='.$c["host"].';port='.$c["porta"]);
  2149 +
  2150 + $sql = "ALTER TABLE ".$nome_esquema.".".$nome_tabela." RENAME COLUMN $nome_coluna TO ".$novonome_coluna;
  2151 + $res = $dbh->query($sql,PDO::FETCH_ASSOC);
  2152 +
2139 2153 $coluna = $this->execSQLDB($codigo_estat_conexao,"SELECT column_name FROM information_schema.columns where table_name = '$novonome_tabela' and table_schema = '$nome_esquema' and column_name = '$novonome_coluna'");
2140 2154 if(count($coluna) > 0){
2141 2155 $sql = "UPDATE i3geoestat_medida_variavel SET colunavalor = '$novonome_coluna' WHERE esquemadb = '$nome_esquema' and tabela = '$nome_tabela' and colunavalor = '$nome_coluna'";
2142   - $this->execSQL($sql,"",false);
  2156 + $dbh->query($sql,PDO::FETCH_ASSOC);
2143 2157 $sql = "UPDATE i3geoestat_medida_variavel SET colunaidgeo = '$novonome_coluna' WHERE esquemadb = '$nome_esquema' and tabela = '$nome_tabela' and colunaidgeo = '$nome_coluna'";
2144   - $this->execSQL($sql,"",false);
  2158 + $dbh->query($sql,PDO::FETCH_ASSOC);
2145 2159 $sql = "UPDATE i3geoestat_medida_variavel SET colunaidunico = '$novonome_coluna' WHERE esquemadb = '$nome_esquema' and tabela = '$nome_tabela' and colunaidgeo = '$nome_coluna'";
2146   - $this->execSQL($sql,"",false);
  2160 + $dbh->query($sql,PDO::FETCH_ASSOC);
2147 2161 $sql = "UPDATE i3geoestat_tipo_regiao SET colunageo = '$novonome_coluna' WHERE esquemadb = '$nome_esquema' and tabela = '$nome_tabela' ' and colunageo = '$nome_coluna'";
2148   - $this->execSQL($sql,"",false);
  2162 + $dbh->query($sql,PDO::FETCH_ASSOC);
2149 2163 $sql = "UPDATE i3geoestat_tipo_regiao SET colunanomeregiao = '$novonome_coluna' WHERE esquemadb = '$nome_esquema' and tabela = '$nome_tabela' ' and colunanomeregiao = '$nome_coluna'";
2150   - $this->execSQL($sql,"",false);
  2164 + $dbh->query($sql,PDO::FETCH_ASSOC);
2151 2165 $sql = "UPDATE i3geoestat_tipo_regiao SET colunacentroide = '$novonome_coluna' WHERE esquemadb = '$nome_esquema' and tabela = '$nome_tabela' ' and colunacentroide = '$nome_coluna'";
2152   - $this->execSQL($sql,"",false);
  2166 + $dbh->query($sql,PDO::FETCH_ASSOC);
2153 2167  
2154 2168 $sql = "UPDATE i3geoestat_parametro_medida SET coluna = '$novonome_coluna' FROM i3geoestat_medida_variavel WHERE i3geoestat_parametro_medida.id_medida_variavel = i3geoestat_medida_variavel.id_medida_variavel and esquemadb = '$nome_esquema' and tabela = '$nome_tabela' and coluna = '$nome_coluna'";
2155   - $this->execSQL($sql,"",false);
  2169 + $dbh->query($sql,PDO::FETCH_ASSOC);
2156 2170 $sql = "UPDATE i3geoestat_agregaregiao SET colunaligacao_regiaopai = '$novonome_coluna' FROM i3geoestat_tipo_regiao WHERE i3geoestat_agregaregiao.codigo_tipo_regiao = i3geoestat_tipo_regiao.codigo_tipo_regiao and esquemadb = '$nome_esquema' and tabela = '$nome_tabela' and colunaligacao_regiaopai = '$nome_coluna'";
2157   - $this->execSQL($sql,"",false);
  2171 + $dbh->query($sql,PDO::FETCH_ASSOC);
2158 2172 }
2159 2173 return $res;
2160 2174 }
... ... @@ -2723,6 +2737,8 @@ class Metaestat{
2723 2737 * @return string
2724 2738 */
2725 2739 function negativaValoresMedidaVariavel($id_medida_variavel){
  2740 + $this->testaNumerico(array($id_medida_variavel));
  2741 +
2726 2742 $medida = $this->listaMedidaVariavel("",$id_medida_variavel);
2727 2743 if($medida["esquemadb"] != "i3geo_metaestat"){
2728 2744 return "erro";
... ... @@ -2867,5 +2883,16 @@ class Metaestat{
2867 2883 }
2868 2884 return $nomeshp;
2869 2885 }
  2886 + /*
  2887 + * Testa se os elementos de um array sao numericos
  2888 + */
  2889 + function testaNumerico($valores){
  2890 + foreach ($valores as $valor) {
  2891 + if(!empty($valor) && !is_numeric($valor)) {
  2892 + echo "valor nao numerico";
  2893 + exit;
  2894 + }
  2895 + }
  2896 + }
2870 2897 }
2871 2898 ?>
... ...
admin/php/metaestat.php
... ... @@ -1140,6 +1140,8 @@ switch (strtoupper($funcao))
1140 1140 {JSON}
1141 1141 */
1142 1142 case "MAPFILEMEDIDAVARIAVEL":
  1143 + //$filtro usa aspas duplas para enviar os parametros
  1144 + $filtro = str_replace('"',"'",$filtro);
1143 1145 $m = new Metaestat();
1144 1146 if(!isset($codigo_tipo_regiao)){
1145 1147 $codigo_tipo_regiao = "";
... ...
admin/php/operacoes.php
... ... @@ -25,7 +25,7 @@ Este programa é distribuído na expectativa de que seja útil
25 25 porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita
26 26 de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA.
27 27 Consulte a Licença Pública Geral do GNU para mais detalhes.
28   -Você deve ter recebido uma cpia da Licença Pública Geral do
  28 +Você deve ter recebido uma copia da Licença Pública Geral do
29 29 GNU junto com este programa; se não, escreva para a
30 30 Free Software Foundation, Inc., no endereço
31 31 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
... ... @@ -170,4 +170,4 @@ function excluirPapelOperacao(){
170 170 return "Error!: " . $e->getMessage();
171 171 }
172 172 }
173   -?>
174 173 \ No newline at end of file
  174 +?>
... ...
classesphp/mapa_controle.php
... ... @@ -2262,4 +2262,4 @@ function redesenhaMapa()
2262 2262 {$retorno = array("variaveis"=>$res,"temas"=>$par);}
2263 2263 cpjson($retorno);
2264 2264 }
2265   -?>
2266 2265 \ No newline at end of file
  2266 +?>
... ...
ferramentas/metaestat/index.js
... ... @@ -1363,7 +1363,7 @@ i3GEOF.metaestat = {
1363 1363 for(i=0;i<n;i++){
1364 1364 c = $i("comboparametro_"+dados[i].id_parametro_medida+"_"+dados[i].id_pai);
1365 1365 if(c && c.value != ""){
1366   - t.push(dados[i].coluna+"="+c.value);
  1366 + t.push(dados[i].coluna+'="'+c.value+'"');
1367 1367 }
1368 1368 }
1369 1369 if(t.length > 0){
... ...