Simple AntiBot en PHP

Iniciado por Karman, 19 Febrero 2011, 05:16 AM

0 Miembros y 1 Visitante están viendo este tema.

Karman

bueno, dado que estaba sufriendo varios ataques en mi web (no se ni me interesa de quien) tube que implementar un antibot parecido al que se usaba en este sitio (inspirado en lo que puso el-brujo en un post aunque mucho más simple)

Código (php) [Seleccionar]
<?php /* antibot.php */

function checkBot(){
//cookie params
@ini_set('session.use_cookies',1);
@ini_set('session.cookie_lifetime',31536000);//un año
@ini_set('session.use_only_cookies',1);
@ini_set('session.cookie_path','/');
// configufación de variables PHP
@ini_set('session.name',"AntiBot");//nombre de la cookie
//otras opciones   
@ini_set('session.hash_function',0);
@ini_set('session.use_trans_sid',0);
@ini_set('session.save_path','/tmp');
@session_start();

if(!isset($_SESSION['bottime']))
$_SESSION['bottime']=rand(100,999);
$bottime=$_SESSION['bottime'];

if(isset($_REQUEST['antibotkey']))
$_SESSION['antibotkey']=$_REQUEST['antibotkey'];
if(isset($_SESSION['antibotkey'])&&isset($_SESSION['bottime'])){
$antibotkey=$_SESSION['antibotkey'];
if(!empty($antibotkey)&&sha1($_SERVER['HTTP_USER_AGENT'].$bottime)==$antibotkey)
  return null;
}

if(!isset($_SESSION['botcount']))
$_SESSION['botcount']=0;
else
$_SESSION['botcount']++;

if($_SESSION['botcount']>10){
$_SESSION['botcount']=0;
@session_write_close();
@header("Location: http://www.google.com");
}

return sha1($_SERVER['HTTP_USER_AGENT'].$bottime);
}

?>


Código (php) [Seleccionar]
<?php /* index.php */
/********************************* Anti Bot ************************************/

include 'antibot.php';
$antibotkey=checkBot();
if(!empty(
$antibotkey))
die("<a href='index.php?antibotkey=$antibotkey'>Haz Click Aquí para Entrar al Sitio</a><br/><br/>Este Mensaje es mostrado para evitar el ingreso de Bots y solo lo verás una vez.<br/><br/>Disculpe las molestias.");

/********************************* Anti Bot ************************************/


se puede optimizar, se le pueden agregar más checkeos, etc... pero es para tener una base dado que la que se utilizó acá en el foro no es público el código... je  :xD, pero como supongo es algo temporal no me calenté mucho en mejorarlo :)

S2

PD: El protocolo no es ese, pero es perecido, je

~ Yoya ~

Es bypaseable xD, aunque creo que cualquier antibot se puede bypasear nomas sabiendo su algoritmo. Lo único que te puedo recomendar es que no muestre tus archivo antibot, aunque no muestres el source, mirando bien el funcionamiento de la web puedes saber como funciona tu antibotne.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

Karman

Cita de: ~ Yoya ~ en 19 Febrero 2011, 14:18 PMEs bypaseable xD, aunque creo que cualquier antibot se puede bypasear nomas sabiendo su algoritmo. Lo único que te puedo recomendar es que no muestre tus archivo antibot, aunque no muestres el source, mirando bien el funcionamiento de la web puedes saber como funciona tu antibotne.

el protocolo es solo de ida, les va a llevar su buen rato descifrarlo...  ;), además, eso es configurable, se lo puede complicar tanto como se quiera...  :P

S2