Arquivo protect.php <?php /** * Classe para proteção de Variaveis passadas externamente entre Client->Servidor * Atenção: Esta classe/função é baseada em diversos códigos da internet * Creditos: Gabriel_Criminal */ class php_anticracker{ //Nome não poderia ser outro... public function php_array_protect_custom($var,$selfCall = False/*selfCall = Se função da propria classe chama a mesma*/){//Verifica se array possui codigo ilicito global $code_detect; //Palavras que podem ser utilizadas para code{sql/php/javascript/outros..} injection $palavras=array(";","'","*","<script>","</script>","<html>","</html>","<?","?>","<script","function","procedure",chr(34),chr(39),chr(92),chr(96),"drop table","update","alter table","drop database","drop","select" ,"delete","insert","alter","destroy","table","database","union","TABLE_NAME","1=1",'or 1','exec','information_schema','INFORMATION_SCHEMA','like','COLUMNS','into' ,'VALUES','INTO','LIKE','EXEC','OR 1','UNION','DATABASE','TABLE'); foreach($var as $nome_da_chave => $valor_na_chave) //Aqui começa a brincadeira... { if(is_array($valor_na_chave))//Se a chave for array passa para a outra função que checa arrays customizaveis { $code_detect = $this->php_array_protect_custom($valor,true); } //Variaveis $inicio,$fim para controle do while $atual = 1; $fim = sizeof($palavras);//Pega o tamanho da array de possiveis palavras para injection while($fim >= $atual) //While para checar se as palavras pre-definidas por você são achadas { $alvo = strpos($valor_na_chave,$palavras[$atual]);// if($alvo !== false)//Error: Codigo Ilicito detectado... { $code_detect = true; } $atual++; }; }; if($selfCall==False){if($code_detect=true){return false;}else{return true;};/*Codigo Limpo~Variavel Normal*/}; } public function php_array_protect_site(){//Proteje o Site de Qualquer Code-Injection "Simples" das variaveis SUPER-GLOBAIS // * Variaveis Escaneadas: // * $_GET $_POST $_SERVER $_SESSION $_REQUEST (Funções que podem ser manipuladas e editadas atraves de aplicações do "Cliente") global $code_detect; //Palavras que podem ser utilizadas para code{sql/php/javascript/outros..} injection $palavras=array(";","'","*","<script>","</script>","<html>","</html>","<?","?>","<script","function","procedure",chr(34),chr(39),chr(92),chr(96),"drop table","update","alter table","drop database","drop","select" ,"delete","insert","alter","destroy","table","database","union","TABLE_NAME","1=1",'or 1','exec','information_schema','INFORMATION_SCHEMA','like','COLUMNS','into' ,'VALUES','INTO','LIKE','EXEC','OR 1','UNION','DATABASE','TABLE'); for ($variavel_global=1;$variavel_global <=5/* Numero de Variaveis Super Globais que serão escaneadas*/;$variavel_global++) //Cria Loop Para Escanear Variaveis Globais { switch($variavel_global) //Verifica qual o numeral atual do loop e passa a variavel relevante à variavel $array { case 1: $array = $_GET; break; case 2: $array = $_POST; break; case 3: $array = $_SERVER; break; case 4: $array = $_SESSION; break; case 5: $array = $_REQUEST; break; }; foreach($array as $nome_da_chave => $valor_na_chave) //Aqui começa a brincadeira... { if(is_array($valor_na_chave))//Se a chave for array passa para a outra função que checa arrays customizaveis { $code_detect = $this->php_array_protect_custom($valor,true); } else //Caso não.. { //Variaveis $inicio,$fim para controle do while $atual = 1; $fim = sizeof($palavras);//Pega o tamanho da array de possiveis palavras para injection while($fim >= $atual) //While para checar se as palavras pre-definidas por você são achadas { $alvo = strpos($valor_na_chave,$palavras[$atual]);// if($alvo !== false)//Error: Codigo Ilicito detectado... { $code_detect = true; } $atual++; }; } }; }; if($code_detect=true){return false;}else{return true;};/*Codigo Limpo~Site Protegido*/ } public function php_single_custom($var)//Checa Variaveis simples { global $code_detect; //Palavras que podem ser utilizadas para code{sql/php/javascript/outros..} injection $palavras=array(";","'","*","<script>","</script>","<html>","</html>","<?","?>","<script","function","procedure",chr(34),chr(39),chr(92),chr(96),"drop table","update","alter table","drop database","drop","select" ,"delete","insert","alter","destroy","table","database","union","TABLE_NAME","1=1",'or 1','exec','information_schema','INFORMATION_SCHEMA','like','COLUMNS','into' ,'VALUES','INTO','LIKE','EXEC','OR 1','UNION','DATABASE','TABLE'); //Variaveis $inicio,$fim para controle do while $atual = 1; $fim = sizeof($palavras);//Pega o tamanho da array de possiveis palavras para injection while($fim >= $atual) //While para checar se as palavras pre-definidas por você são achadas { $alvo = strpos($var,$palavras[$atual]);// if($alvo !== false)//Error: Codigo Ilicito detectado... { $code_detect = true; } $atual++; }; if($code_detect=true){return false;}else{return true;};/*Codigo Limpo~Site Protegido*/ } }; ?>