FORUM DARKERS

Tecnologia & Informática => Programação => PhP/Html => Topic started by: Fvox on 05 de January , 2009, 08:04:27 PM

Title: PHP Security Class 0.2
Post by: Fvox on 05 de January , 2009, 08:04:27 PM
Hi.

Essa classe tá bem básica, mas até que ficou legal, hehe.

QuoteFeatures:
-Filtro Anti XSS
-Anti PHP File Upload
-Anti Local File Inclusion (Novo!)
-Anti SQL Injection (POST ou GET)
-Anti Overflow (character limit)
-Grava logs com infos do usuário quando houver tentativa de hacking


Para utilizar no seu script:
<?php
include "security.php";
$sec = new Security;
?>



Source:
<?php
/* PHP Security Class v0.2
by fvox
[Collaps3 CREW] */
class Security
{
   private 
$max_chars 3000//max de caracteres para evitar overflow
   
   
public function __construct(){
      try{
         foreach(
$_POST as $nome=>$value){
            
$this->check($value);
         }
         foreach(
$_GET as $nome=>$value){
            
$this->check($value);
         }
         foreach(
$_COOKIE as $nome=>$value){
            
$this->check($value);
         }
         foreach(
$_FILES as $nome=>$value){
            if(
preg_match("/\.php/i"$value['name'])){
               throw new 
Exception("PHP File Upload");
            }
         }
      }
      catch(
Exception $err){
         
$this->log($err$nome);
         die(
"Hacking Attempt");
      }
   }
   
   private function 
log($err$input){
      
$fp fopen("security.log","a");
      
$data "\n\n\n";
      
$data .= "#####################\n";
      
$data .= "Error:" .$err->getMessage() ."\n";
      
$data .= "Input: ".$_SERVER['QUERY_STRING']."\n";
      
$data .= "IP: ".$_SERVER['REMOTE_ADDR']."\n";
      
$data .= "#####################\n";
      
fwrite($fp$data);
      
fclose($fp);
   }
   
   public function 
check($input){
      if(
strlen($input) > $this->max_chars){
         throw new 
Exception("Overflow");
      }
      elseif(
preg_match("/\.\.\//i",$input)){
         throw new 
Exception("Local File Inclusion");
      }
      elseif(
preg_match("/[^\sa-zA-Z0-9]/i",$input)){
         throw new 
Exception("SQL Injection");
      }
   }
         
   public function 
filtro($input){
      return 
addslashes(htmlentities($input));
   }
}

$fvox = new Security;
?>



Se acharem algum bug, só postar aqui.  ;)
*Valeu branco pelos links de OOP, ajudou bastante, LOL.

[]'s
Title: Re: PHP Security Class 0.2
Post by: branco on 06 de January , 2009, 03:44:45 AM
to desanimado de verificar o código...3:40 agora, ja to indo dormir...
de qualquer forma, parabéns assim mesmo, pelos estudos de POO ^^
tem uma diretiva no php ini que esqueci o nome... da pra vc auto incluir esse script em todas as páginas... fica mais comodo eu acho.

vlws, até mais
Title: Re: PHP Security Class 0.2
Post by: JotaC on 08 de February , 2009, 12:18:35 PM
Isso ajudou muito!
Vlw  :D
Title: Re: PHP Security Class 0.2
Post by: Triplo X on 08 de February , 2009, 09:28:06 PM
Massa é aqui:


<?php
// certifica para que o formulario seja enviado apenas de meu servidor
    
if(!(isset($_SERVER['HTTP_REFERER']) &&
    
stristr($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST']))) {
    
$serverInvalido=true;
    echo 
'<center><font color="#000000" size="4" face="arial">Voce nao tem permissao para fazer isso!<p></font></center>';
    }

   
// proibe a postagem de links em um formulario, por exemplo
    
elseif (preg_match_all("/<a|http:/i"implode($_POST), $out) > 0) {
    echo 
'<center><font color="#000000" size="4" face="arial">Eh proibido postar qualquer link neste formulario!</font></center>';
   
// exit;  ela encerra o codigo nesta linha
    
}
?>


Isso evita span, por exemplo ;)

até
Title: Re: PHP Security Class 0.2
Post by: S3ijy on 08 de February , 2009, 11:14:31 PM
Muito bom mesmo! Fácil de Implementar, mas faz uma diferença considerável!
Agora tem que alguém tentar vencer isso, pra forçar melhoras no código! E que o ciclo se repita!

Vlw!
S3ijy
Title: Re: PHP Security Class 0.2
Post by: shake on 16 de February , 2009, 12:08:10 PM
Poxa parabéns pela idéia!
Vai ajudar bastante!

Abraço