cakephp funcion para bloquear ips y evitar spam
- agosto 23, 2010
- 0 comentario/s
- CakePHP Tags: seguridad, spam, tutoriales
En este post voy a explicar como hacer una función que bloquea ips de robots o simples usuarios spammers.
Para esto mezclaremos la utilización de archivos de configuración donde iremos registrando en un array las ips que queremos bloquear.
Lo primero es crear un archivo de configuración que podrá ser utilizado desde cualquier parte de la aplicación.
En este archivo de configuración crearemos una variable que contendrá un array con registros de ips.
/app/config/ip_block.php
<?php
$config['Ip']['block'] = array('xxx.xxx.xxx.xxx');
?>
Esta funcionalidad es ideal para ir insertando las ips manualmente, previo análisis.
A continuación la función con la lógica que procesa la ip y las busca en el array de ips bloqueadas que hemos definido anteriormente en el archivo de configuración.
lo ideal será colocarla en /app/controllers/app_controller.php
<?
class AppController extends Controller
{
function __construct()
{
parent::__construct();
}
/**
* funcion para bloquear ips.
* Esta funcion se puede llamar desde cualquier funcion/controlador para comprobar si una ip está bloqueada.
* Las ips bloqueadas se guardan en un array en /app/config/ip_block.php
* La funcion simplemente carga el archivo de configuración y le las ips que hay registradas y las comprueba con la ip que enviamos
* Si la ip coincide redirigimos a la home o donde queramos.
* Esta funcion se puede usar en una determinada accion o en un controlador entero incluyéndola en el beforeFilter.
*
*
* @param mixed $ip que estamos comprobando
* @version 1.0
* @author Pedro Ventura
*/
function comprobar_ip_block($ip)
{
Configure::load('ip_block');
$array_ips_bloqueadas = Configure::read('Ip');
/**
* Formato del array devuelto
*
* [block] => Array
(
[0] => xxx.xxx.xx.xxx
[1] => xx.xx.xxx.xx
)
*/
if(in_array($ip,$array_ips_bloqueadas['block']))
{
#ip bloqueada
$this->Session->setFlash(__("Tu ip ha sido bloqueada para realizar esta accion",true));
$this->redirect(array('controller'=>'mi_controller','action'=>'index'));
}
}
}
?>
Podemos usar la función anterior llamándola desde cualquier otra función ya que se encuentra en el app_controller.php o incluso para restringir el acceso a un determinado controlador a usuarios spam o a robots que previamente hemos sacado sus ips y añadido en el archivo de configuración, para ello bastaría con añadirlo a la función beforeFilter del controlador.
Si lo que queremos es bloquear las ips a toda la aplicación habrá que añadir la llamada a la función en el beforeFilter del app_controller.php
function beforeFilter()
{
parent::beforeFilter();
$this->comprobar_ip_block($_SERVER['REMOTE_ADDR']);
}
Tags de búsquedas:
array fichero ips php, bloquear ip php
Posts Relacionados:
- firewall básico en linux para bloquear ips a servicios con hosts.allow y hosts.deny Algo que he aprendido hace poco, aunque ya sabía pero no con tanto detalle, es el manejo de los archivos /etc/hosts.allow y /etc/hosts.deny en linux para bloquear el acceso de...
- Evitar que se descarguen tu web y bloquear otros crawlers desde robots.txt Hace unos días escribía un post sobre como Descargar un sitio web completo desde consola con linux. La solución para evitar a este tipo de problema, que descarguen tu web...
- Cómo comprobar si existe una función en PHP Se puede probar si existe una función en PHP con la function_exists () función, que devuelve true si la función existe y false si no existe. Esto es muy importante...
- funcion en php para limpiar cadenas de texto en utf8 A continuación indico una simple función que he desarrollado y el uso básico que le estoy dando es para limpiar las cadenas de esto de html, carácteres htmlentities, tabulaciones, espacios...
- Componente de AutoLogin para CakePHP, no cerrar sesión. Uso y manejo de Cookies En este artículo voy a explicar como trabajar con las cookies en CakePHP. El uso de cookies en aplicaciones web, en todo lo que llevo trabajando, es algo fundamental. Claro...

Te ha ayudado el artículo? Colabora!
RSS Feed