From 9823f9d2e4e9e24ef58e0b3cb37abe3099bcae3c Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Wed, 10 Aug 2016 19:32:34 -0300 Subject: [PATCH] aprimoramento das validações nas ferramentas de upload --- classesphp/funcoes_gerais.php | 18 ++++++++++++++++++ ferramentas/aplicarsld/upload.php | 14 +++++++++++++- ferramentas/carregamapa/upload.php | 13 +++++++++++-- ferramentas/importarwmc/upload.php | 13 ++++++++++++- ferramentas/upload/upload.php | 29 ++++++++++++++++++++++++++++- ferramentas/uploaddbf/upload.php | 14 +++++++++++++- ferramentas/uploadgpx/upload.php | 11 ++++++++++- ferramentas/uploadkml/upload.php | 11 ++++++++++- ferramentas/uploadsimbolo/upload.php | 18 +++++++++++++++++- 9 files changed, 132 insertions(+), 9 deletions(-) diff --git a/classesphp/funcoes_gerais.php b/classesphp/funcoes_gerais.php index 6efb825..7c211dd 100755 --- a/classesphp/funcoes_gerais.php +++ b/classesphp/funcoes_gerais.php @@ -3021,4 +3021,22 @@ function pegaProjecaoDefault($tipo=""){ return $i3GeoProjDefault[$tipo]; } } +/** + * Verifica se uma string existe em um arquivo + */ +function fileContemString($arq,$s){ + if(!file_exists($arq)){ + return false; + } + $handle = fopen($arq, 'r'); + $valid = false; // init as false + while (($buffer = fgets($handle)) !== false) { + if (strpos($buffer, $s) !== false) { + $valid = TRUE; + break; // Once you find the string, you should break out the loop. + } + } + fclose($handle); + return $valid; +} ?> diff --git a/ferramentas/aplicarsld/upload.php b/ferramentas/aplicarsld/upload.php index 7daae97..3710632 100755 --- a/ferramentas/aplicarsld/upload.php +++ b/ferramentas/aplicarsld/upload.php @@ -22,7 +22,7 @@ $tema = $_GET["tema"];

Carregando o arquivo...

"; $dirmap = $dir_tmp; $Arquivo = $_FILES['i3GEOcarregamapafilemap']['name']; - $Arquivo = str_replace(".map","",$Arquivo)."_up.map"; + $Arquivo = str_replace(".map","",$Arquivo) . md5(uniqid(rand(), true)) . "_up.map"; + + $Arquivo = strip_tags($Arquivo); + $Arquivo = htmlspecialchars($Arquivo, ENT_QUOTES); verificaNome($Arquivo); /* @@ -36,6 +39,12 @@ if (isset($_FILES['i3GEOcarregamapafilemap']['name'])) if($statusNome != 1) {echo "

Arquivo inválido.!";paraAguarde();exit;} */ + + $checkphp = fileContemString($_FILES['i3GEOcarregamapafilemap']['tmp_name'],"Carregando o arquivo...

"; //verifica nomes $ArquivoDest = $_FILES['i3GEOimportarwmc']['name']; + $ArquivoDest = $ArquivoDest . md5(uniqid(rand(), true)); $ArquivoDest = str_replace(".xml","",$ArquivoDest).".xml"; + + $ArquivoDest = strip_tags($ArquivoDest); + $ArquivoDest = htmlspecialchars($ArquivoDest, ENT_QUOTES); + verificaNome($ArquivoDest); //sobe arquivo + + $checkphp = fileContemString($_FILES['i3GEOimportarwmc']['tmp_name'],"try{window.scrollTo(0,10000);window.parent.i3GEOF.upload.aguarde.visibility='hidden';}catch(e){};"; } function verificaNome($nome){ + if(strlen(basename($nome)) > 200){ + exit; + } $nome = strtolower($nome); $lista = explode(".",$nome); $extensao = $lista[count($lista) - 1]; diff --git a/ferramentas/uploaddbf/upload.php b/ferramentas/uploaddbf/upload.php index 700d73a..d3e1733 100755 --- a/ferramentas/uploaddbf/upload.php +++ b/ferramentas/uploaddbf/upload.php @@ -20,8 +20,13 @@ if (ob_get_level() == 0) ob_start();

Carregando o arquivo...

"; ob_flush(); @@ -43,11 +49,21 @@ if (isset($_FILES['i3GEOuploadsimboloarq']['name'])){ $nome = str_replace(".png","",$nome).".png"; + $nome = strip_tags($nome); + $nome = htmlspecialchars($nome, ENT_QUOTES); + + $nome = $nome . md5(uniqid(rand(), true)); + verificaNome($nome); //sobe arquivo $Arquivo = $_FILES['i3GEOuploadsimboloarq']['tmp_name']; $destino = $dirDestino."/".$nome; + $check = getimagesize($Arquivo); + if($check === false) { + exit; + } + if(file_exists($destino)) {echo "

Já existe um arquivo com o nome ".$destino;paraAguarde();exit;} $status = move_uploaded_file($Arquivo,$destino); -- libgit2 0.21.2