Ir para o conteúdo
ou

Software livre Brasil




Software livre, Compartilhar a fonte....  Multiplicando idéias..... Ajudando o próximo....  Tornando um sonho em realidade.... A felicidade de alguém que um dia chegou onde quis....


Compartilhe Felicidade....... Bons Negócios e ajude a manter vivo a nação open source.....!

Twitter/

Camaradinha

Jonatan

 Voltar a Compartilhando
Tela cheia

Exemplos de Firewall em PHP.

8 de Julho de 2011, 0:00 , por Software Livre Brasil - 0sem comentários ainda | Ninguém está seguindo este artigo ainda.
Visualizado 585 vezes

Ola pessoal aqui vamos ver um pouco mais sobre Firewall em PHP.

Promeiro vamos ver algumas defines internas do sistema.

ID Flags
FILTER_SANITIZE_EMAIL  
FILTER_SANITIZE_ENCODED FILTER_FLAG_STRIP_LOW, FILTER_FLAG_STRIP_HIGH, FILTER_FLAG_ENCODE_LOW, FILTER_FLAG_ENCODE_HIGH
FILTER_SANITIZE_MAGIC_QUOTES  
FILTER_SANITIZE_NUMBER_FLOAT FILTER_FLAG_ALLOW_FRACTION, FILTER_FLAG_ALLOW_THOUSAND, FILTER_FLAG_ALLOW_SCIENTIFIC
FILTER_SANITIZE_NUMBER_INT  
FILTER_SANITIZE_SPECIAL_CHARS FILTER_FLAG_STRIP_LOW, FILTER_FLAG_STRIP_HIGH, FILTER_FLAG_ENCODE_HIGH
FILTER_SANITIZE_FULL_SPECIAL_CHARS FILTER_FLAG_NO_ENCODE_QUOTES,
FILTER_SANITIZE_STRING FILTER_FLAG_NO_ENCODE_QUOTES, FILTER_FLAG_STRIP_LOW, FILTER_FLAG_STRIP_HIGH, FILTER_FLAG_ENCODE_LOW, FILTER_FLAG_ENCODE_HIGH, FILTER_FLAG_ENCODE_AMP
FILTER_SANITIZE_STRIPPED  
FILTER_SANITIZE_URL  
FILTER_UNSAFE_RAW FILTER_FLAG_STRIP_LOW, FILTER_FLAG_STRIP_HIGH, FILTER_FLAG_ENCODE_LOW, FILTER_FLAG_ENCODE_HIGH, FILTER_FLAG_ENCODE_AMP

Usando:

<?php

$a
= "\tcafé\n";
//This will remove the tab and the line break

echo filter_var($a, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW);

//This will remove the é.
echo filter_var($a, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH);

?>

Limpando Uma String,

  function sanitize($string, $trim = false)
  {
    $string = filter_var($string, FILTER_SANITIZE_STRING);
    $string = trim($string);
    $string = stripslashes($string);
    $string = strip_tags($string);
    $string = str_replace(array('‘','’','“','”'), array("'","'",'"','"'), $string);
    if($trim)
    $string = substr($string, 0, $trim);
   
    return $string;
  }



Alem desses modos acima podemos criar filtros personalizados de acordo com nossas ideias de ataques a requisições para o sistema.

Exemplo de filtros:

    $ct_rules = Array(       
        '*/from/*', '*/insert/*', '+into+', '%20into%20', '*/into/*', ' into ', 'into', '*/limit/*', 'not123exists*', '*/radminsuper/*', '*/select/*', '+select+', '%20select%20', ' select ',  '+union+', '%20union%20', '*/union/*', ' union ', '*/update/*', '*/where/*',
        'applet', 'base', 'bgsound', 'blink', 'embed', 'expression', 'frame', 'javascript', 'layer', 'link', 'meta', 'object', 'onabort', 'onactivate', 'onafterprint', 'onafterupdate', 'onbeforeactivate', 'onbeforecopy', 'onbeforecut', 'onbeforedeactivate', 'onbeforeeditfocus', 'onbeforepaste', 'onbeforeprint', 'onbeforeunload', 'onbeforeupdate', 'onblur', 'onbounce', 'oncellchange', 'onchange', 'onclick', 'oncontextmenu', 'oncontrolselect', 'oncopy', 'oncut', 'ondataavailable', 'ondatasetchanged', 'ondatasetcomplete', 'ondblclick', 'ondeactivate', 'ondrag', 'ondragend', 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart', 'ondrop', 'onerror', 'onerrorupdate', 'onfilterchange', 'onfinish', 'onfocus', 'onfocusin', 'onfocusout', 'onhelp', 'onkeydown', 'onkeypress', 'onkeyup', 'onlayoutcomplete', 'onload', 'onlosecapture', 'onmousedown', 'onmouseenter', 'onmouseleave', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onmousewheel', 'onmove', 'onmoveend', 'onmovestart', 'onpaste', 'onpropertychange', 'onreadystatechange', 'onreset', 'onresize', 'onresizeend', 'onresizestart', 'onrowenter', 'onrowexit', 'onrowsdelete', 'onrowsinserted', 'onscroll', 'onselect', 'onselectionchange', 'onselectstart', 'onstart', 'onstop', 'onsubmit', 'onunload', 'script', 'style', 'title', 'vbscript', 'xml');

Aplicando Filtro em Cookie do sistema:

            foreach($_COOKIE as $value) {
                $check = str_replace($ct_rules, '*', $value);
                if( $value != $check ) {
                    die( 'Cookie protect' );
                    unset( $value );
                }
   

Aplicando Filtro em requisição POST do sistema:

            foreach( $_POST as $value ) {
                $check = str_replace($ct_rules, '*', $value);
                if( $value != $check ) {
                    die( 'POST protect' );
                    unset( $value );
                }
            }

E assim por diante.

Proteção contra Agentes ou bots

 

  function PHP_FIREWALL_get_user_agent() {

                return $_SERVER["HTTP_USER_AGENT"];
       
    }

 

define('PHP_FIREWALL_USER_AGENT', PHP_FIREWALL_get_user_agent() );

          $ct_rules = array( '@nonymouse', 'addresses.com', 'ideography.co.uk', 'adsarobot', 'ah-ha', 'aktuelles', 'alexibot', 'almaden', 'amzn_assoc', 'anarchie', 'art-online', 'aspseek', 'assort', 'asterias', 'attach', 'atomz', 'atspider', 'autoemailspider', 'backweb', 'backdoorbot', 'bandit', 'batchftp', 'bdfetch', 'big.brother', 'black.hole', 'blackwidow', 'blowfish', 'bmclient', 'boston project', 'botalot', 'bravobrian', 'buddy', 'bullseye', 'bumblebee ', 'builtbottough', 'bunnyslippers', 'capture', 'cegbfeieh', 'cherrypicker', 'cheesebot', 'chinaclaw', 'cicc', 'civa', 'clipping', 'collage', 'collector', 'copyrightcheck', 'cosmos', 'crescent', 'custo', 'cyberalert', 'deweb', 'diagem', 'digger', 'digimarc', 'diibot', 'directupdate', 'disco', 'dittospyder', 'download accelerator', 'download demon', 'download wonder', 'downloader', 'drip', 'dsurf', 'dts agent', 'dts.agent', 'easydl', 'ecatch', 'echo extense', 'efp@gmx.net', 'eirgrabber', 'elitesys', 'emailsiphon', 'emailwolf', 'envidiosos', 'erocrawler', 'esirover', 'express webpictures', 'extrac', 'eyenetie', 'fastlwspider', 'favorg', 'favorites sweeper', 'fezhead', 'filehound', 'filepack.superbr.org', 'flashget', 'flickbot', 'fluffy', 'frontpage', 'foobot', 'galaxyBot', 'generic', 'getbot ', 'getleft', 'getright', 'getsmart', 'geturl', 'getweb', 'gigabaz', 'girafabot', 'go-ahead-got-it', 'go!zilla', 'gornker', 'grabber', 'grabnet', 'grafula', 'green research', 'harvest', 'havindex', 'hhjhj@yahoo', 'hloader', 'hmview', 'homepagesearch', 'htmlparser', 'hulud', 'http agent', 'httpconnect', 'httpdown', 'http generic', 'httplib', 'httrack', 'humanlinks', 'ia_archiver', 'iaea', 'ibm_planetwide', 'image stripper', 'image sucker', 'imagefetch', 'incywincy', 'indy', 'infonavirobot', 'informant', 'interget', 'internet explore', 'infospiders',  'internet ninja', 'internetlinkagent', 'interneteseer.com', 'ipiumbot', 'iria', 'irvine', 'jbh', 'jeeves', 'jennybot', 'jetcar', 'joc web spider', 'jpeg hunt', 'justview', 'kapere', 'kdd explorer', 'kenjin.spider', 'keyword.density', 'kwebget', 'lachesis', 'larbin',  'laurion(dot)com', 'leechftp', 'lexibot', 'lftp', 'libweb', 'links aromatized', 'linkscan', 'link*sleuth', 'linkwalker', 'libwww', 'lightningdownload', 'likse', 'lwp','mac finder', 'mag-net', 'magnet', 'marcopolo', 'mass', 'mata.hari', 'mcspider', 'memoweb', 'microsoft url control', 'microsoft.url', 'midown', 'miixpc', 'minibot', 'mirror', 'missigua', 'mister.pix', 'mmmtocrawl', 'moget', 'mozilla/2', 'mozilla/3.mozilla/2.01', 'mozilla.*newt', 'multithreaddb', 'munky', 'msproxy', 'nationaldirectory', 'naverrobot', 'navroad', 'nearsite', 'netants', 'netcarta', 'netcraft', 'netfactual', 'netmechanic', 'netprospector', 'netresearchserver', 'netspider', 'net vampire', 'newt', 'netzip', 'nicerspro', 'npbot', 'octopus', 'offline.explorer', 'offline explorer', 'offline navigator', 'opaL', 'openfind', 'opentextsitecrawler', 'orangebot', 'packrat', 'papa foto', 'pagegrabber', 'pavuk', 'pbwf', 'pcbrowser', 'personapilot', 'pingalink', 'pockey', 'program shareware', 'propowerbot/2.14', 'prowebwalker', 'proxy', 'psbot', 'psurf', 'puf', 'pushsite', 'pump', 'qrva', 'quepasacreep', 'queryn.metasearch', 'realdownload', 'reaper', 'recorder', 'reget', 'replacer', 'repomonkey', 'rma', 'robozilla', 'rover', 'rpt-httpclient', 'rsync', 'rush=', 'searchexpress', 'searchhippo', 'searchterms.it', 'second street research', 'seeker', 'shai', 'sitecheck', 'sitemapper', 'sitesnagger', 'slysearch', 'smartdownload', 'snagger', 'spacebison', 'spankbot', 'spanner', 'spegla', 'spiderbot', 'spiderengine', 'sqworm', 'ssearcher100', 'star downloader', 'stripper', 'sucker', 'superbot', 'surfwalker', 'superhttp', 'surfbot', 'surveybot', 'suzuran', 'sweeper', 'szukacz/1.4', 'tarspider', 'takeout', 'teleport', 'telesoft', 'templeton', 'the.intraformant', 'thenomad', 'tighttwatbot', 'titan', 'tocrawl/urldispatcher','toolpak', 'traffixer', 'true_robot', 'turingos', 'turnitinbot', 'tv33_mercator', 'uiowacrawler', 'urldispatcherlll', 'url_spider_pro', 'urly.warning ', 'utilmind', 'vacuum', 'vagabondo', 'vayala', 'vci', 'visualcoders', 'visibilitygap', 'vobsub', 'voideye', 'vspider', 'w3mir', 'webauto', 'webbandit', 'web.by.mail', 'webcapture', 'webcatcher', 'webclipping', 'webcollage', 'webcopier', 'webcopy', 'webcraft@bea', 'web data extractor', 'webdav', 'webdevil', 'webdownloader', 'webdup', 'webenhancer', 'webfetch', 'webgo', 'webhook', 'web.image.collector', 'web image collector', 'webinator', 'webleacher', 'webmasters', 'webmasterworldforumbot', 'webminer', 'webmirror', 'webmole', 'webreaper', 'websauger', 'websaver', 'website.quester', 'website quester', 'websnake', 'websucker', 'web sucker', 'webster', 'webreaper', 'webstripper', 'webvac', 'webwalk', 'webweasel', 'webzip', 'wget', 'widow', 'wisebot', 'whizbang', 'whostalking', 'wonder', 'wumpus', 'wweb', 'www-collector-e', 'wwwoffle', 'wysigot', 'xaldon', 'xenu', 'xget', 'x-tractor', 'zeus' );

 

$check = str_replace($ct_rules, '*', strtolower(PHP_FIREWALL_USER_AGENT) );
        if( strtolower(PHP_FIREWALL_USER_AGENT) != $check ) {
        
            die( "Acesso ao sistema negado" );
            exit();
        }

 

/////////////// fim da proteção contra BOTs

///////////////XSS /////////////////////

    /** protection XSS attack */

       function PHP_FIREWALL_get_query_string() {
       
            return str_replace('%09', '%20', $_SERVER["QUERY_STRING"]);
           
     
   
    }

 

        $ct_rules = array( 'http\:\/\/', 'https\:\/\/', 'cmd=', '&cmd', 'exec', 'concat', './', '../',  'http:', 'h%20ttp:', 'ht%20tp:', 'htt%20p:', 'http%20:', 'https:', 'h%20ttps:', 'ht%20tps:', 'htt%20ps:', 'http%20s:', 'https%20:', 'ftp:', 'f%20tp:', 'ft%20p:', 'ftp%20:', 'ftps:', 'f%20tps:', 'ft%20ps:', 'ftp%20s:', 'ftps%20:', '.php?url=' );
        $check    = str_replace($ct_rules, '*', PHP_FIREWALL_get_query_string() );
        if( PHP_FIREWALL_get_query_string() != $check ) {
           
            die(" _PHPF_PROTECTION_XSS ");
        }

 

/////////// fim XSS

//////////// Desabilitando Requisições no sistema

        if ( $_SERVER["REQUEST_METHOD"] == 'POST' ) {
            if (isset($_SERVER['HTTP_REFERER'])) {
                if ( ! stripos( $_SERVER['HTTP_REFERER'], $_SERVER['HTTP_HOST'], 0 ) ) {
                   
                    die('Requisição Post Desativada');
                }
            }
        }

 

/////////////// Fim

 

///// Protegendo Sistema de Ip Spam

 

        FUNCTION PHP_FIREWALL_get_env($st_var) {
        global $HTTP_SERVER_VARS;
        if(isset($_SERVER[$st_var])) {
            return strip_tags( $_SERVER[$st_var] );
        } elseif(isset($_ENV[$st_var])) {
            return strip_tags( $_ENV[$st_var] );
        } elseif(isset($HTTP_SERVER_VARS[$st_var])) {
            return strip_tags( $HTTP_SERVER_VARS[$st_var] );
        } elseif(getenv($st_var)) {
            return strip_tags( getenv($st_var) );
        } elseif(function_exists('apache_getenv') && apache_getenv($st_var, true)) {
            return strip_tags( apache_getenv($st_var, true) );
        }
        return '';
    }



    FUNCTION PHP_FIREWALL_get_ip() {
        if ( PHP_FIREWALL_get_env('HTTP_X_FORWARDED_FOR') ) {
            return PHP_FIREWALL_get_env('HTTP_X_FORWARDED_FOR');
        } elseif ( PHP_FIREWALL_get_env('HTTP_CLIENT_IP') ) {
            return PHP_FIREWALL_get_env('HTTP_CLIENT_IP');
        } else {
            return PHP_FIREWALL_get_env('REMOTE_ADDR');
        }
    }

     
        $ip_array = array('0', '1', '2', '5', '10', '14', '23', '27', '31', '36', '37', '39', '42', '46', '49', '50', '100', '101', '102', '103', '104', '105', '106', '107', '114', '172', '176', '177', '179', '181', '185', '192', '223', '224' );
        $range_ip = explode('.', PHP_FIREWALL_get_ip() );
        if ( in_array( $range_ip[0], $ip_array ) ) {
            die( 'Acesso negado ao sistema');
        }

 

///////////////////////////////// fim Firewall


Tags deste artigo: firewall php request post get string

0sem comentários ainda

Enviar um comentário

Os campos são obrigatórios.

Se você é um usuário registrado, pode se identificar e ser reconhecido automaticamente.