Comunidad de diseño web y desarrollo en internet online

Asegurando SCRIPTS de REFERER en PHP

Citar            
MensajeEscrito el 10 Ene 2006 03:12 pm
Aveces nos pasa, como a mi en mi caso que simplemente NO queremos instalar o utilizar cosas
alternativas a PHP, por ejemplo mod_security o yerbas de ese estilo.
En mi caso hoy simplemente quería que el dominio http://mucp.arrobagn.com no recibiera variables
manipuladas que no vengan del dominio http://www.arrobagn.com, ya que siempre hay algún script
kiddy haciendose el TOP Hacker a expensas de nosotros.
Corto y pronto (Luego de consultar con el amigo Daniel Marjos) termine haciendo el mio propio, ya
que el de Daniel me complicaba el cerebro para algo mas simple todavía.
Aquí el script:

Código :

<?php
$referers = array (
'mucp.arrobagn.com',
'mucp.arrobagn.com/',
'www.arrobagn.com',
'arrobagn.com',
'200.58.113.4'
);
/*
Uso Simple:
if ($referers)
check_referer($referers);
*/
function check_referer($referers) {
if (count($referers)) {
$found = false;
$temp = explode("/",getenv("HTTP_REFERER"));
$referer = $temp[2];
if ($referer=="") {
$referer = $_SERVER['HTTP_REFERER'];
list($remove,$stuff)=split('//',$referer,2);
list($home,$stuff)=split('/',$stuff,2);
$referer = $home;
}
for ($x=0; $x < count($referers); $x++) {
if (eregi ($referers[$x], $referer)) {
$found = true;
}
}
if ($referer =="")
$found = false;
if (!$found){
print_error("<center>Estas intentando hacer un llamada al website desde un dominio NO
autorizado.</b></center>");
print_error("<center>El panel de control de MU tiene permitido el enlace desde <a
href=\"http://www.arrobagn.com\">http://www.arrobagn.com</a> unicamente.</b></center>");
error_log("[AGN-MUPanel] Illegal Referer. (".getenv("HTTP_REFERER").")", 0);
die();
}
return $found;
} else {
return true;
}
} ?>


Etiquetas agregadas por pedro.

Por Drwilly

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Ene 2006 03:48 pm
un muy buen aporte, seguro. sin embargo hay que señalar algunos puntos:
1. hay gente que navega sin referrers, este script podría joderles toda la vida.
2. independientemente de si el referrer es o no de confiar, se puede modificar todo con greasemonkey y firefox. yo mismo lo he hecho y es bastante sencillo.

algunas de las medidas de seguridad en php es evitar la inyección de código sql y utilizar lo menos posible eval()

un saludo

p.s. por favor, a tu código ponle la etiqueta [code]

Por fael

BOFH

2443 de clabLevel

3 tutoriales
2 articulos

 

firefox
Citar            
MensajeEscrito el 06 Feb 2006 09:50 pm
Aca tengo el update, amigo DrWilly, te falto citar la fuente ;)

Código :

<?php
$referers = array (
            'www1.arrobagn.com',
            'www2.arrobagn.com',
            'www3.arrobagn.com',
            'dev.arrobagn.com',                        
            'www.arrobagn.com',
            'images.arrobagn.com',            
            'prdownloads.impsat.arrobagn.com',
            'arrobagn.com',
            '200.58.113.4',
       'mucp.arrobagn.com',
            '200.68.95.25',
            '200.123.134.161'                                    
            );

function check_referer($referers) {

   /* Modificacion Daniel */
    if (count($referers)==0) return false;

    $found = false;
    $temp = explode("/",getenv("HTTP_REFERER"));
    $referer = $temp[2];
    if ($referer=="") {
   $referer = $_SERVER['HTTP_REFERER'];
        list($remove,$stuff)=split('//',$referer,2);
        list($home,$stuff)=split('/',$stuff,2);
        $referer = $home;
    }
    if (empty($referer)) {
   if ((!$_POST) && (empty($_SERVER["QUERY_STRING"]))) return true;
      echo '<center>Acceso Ilegal, o posible intento de ingreso a un area no permitida.</center>';
      echo '<center>Mi Vida por Nerzul...</center>';
       error_log("[ArrobaGN] Illegal Referer. (".getenv("HTTP_REFERER").")", 0);
       die();
    }
    for ($xx=0; $xx<count($referers); $xx++) {
   if ($referer==$referers[$xx]) return true;
    }
    echo '<center>Acceso Ilegal, o posible intento de ingreso a un area no permitida.</center>';
   echo '<center>Mi Vida por Nerzul...</center>';    
    error_log("[ArrobaGN] Illegal Referer. (".getenv("HTTP_REFERER").")", 0);
    die();
}
?>

Por bet0x

0 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Oct 2008 04:38 pm
Aún con ese Sistema de protección siempre habrá un "Script Kiddy" haciendose el TOP Hacker. Si el navegador puede acceder a xxx archivo, yo tambien puedo :)

Por Giovanni

0 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Oct 2008 05:50 pm
Hola

Lo mejor y mas simple es q las paginas q no queiras q accedan desde otro dominio, las pongas en carpetas q se oculten por medio de htaccesss, es muuuuuucho mas eficiente. Con eso te aseguras (99%, siempre hay alguna trampa) q a esa pagina solo se accede desde otra pagina del mismo dominio.

Fijate q eso es lo q hacen todos los frameworks de php, en donde hay una carpeta de codigos (vistas, controladores, etc) y una carpeta publica (imagenes, html, css, etc), en donde si queres acceder a un archivo por url q este en la carpeta de codigos te es imposible, solo estan disponibles para acceder por url los archivos q estan en la carpeta publica.

saludos!

Por alfathenus

833 de clabLevel

5 tutoriales

 

buenos aires || Argentina

firefox
Citar            
MensajeEscrito el 24 Oct 2008 01:26 pm
htaccess completamente de acuerdo con mi hno...

Te lo resuelve el servidor y no gastas recursos ni memoria en un script de PHP... imaginate si es un sitio de acceso masivo y tenes ese script en todas las paginas de tu site... sería un desperdicio de recursos bastante grande

Saludos

Por 3w

145 de clabLevel



Genero:Masculino  

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.