cakephp funcion para bloquear ips y evitar spam

cakephp funcion para bloquear ips y evitar spam

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:

app bloquear ip,funcion buscar en cakephp,evitar bloqueo ip por spam,denegar acceso a action cakephp,como restringuir extensiones de archivos cakephp,como bloquear una ip que hace spam,bloqueo ip php,bloquear ip para evitar spam,bloquear ip con fig,restringir acceso cakephp

Noticias relacionadas »

1 comentario en “cakephp funcion para bloquear ips y evitar spam

  1. Pingback: CAPTCHA: Cuando la Seguridad Atenta Contra la Accesibilidad « Informática y Accesibilidad para Todos

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Invertir en criptomonedas: »

 

Cómo comprar bitcoin

Invertir y comprar Bitcoin y otras altcoins es más fácil de lo que crees.

1) Si sólo quieres comprar Bitcoin, Ethereum o Litecoin como inversión, tu opción es Coinbase

2) Si quieres probar con otras criptomonedas tu opción es Binance

3) Cualquier duda escríbeme con total libertad al formulario de contacto para resolver dudas: https://www.pedroventura.com/contacto/

¡Comparte este artículo! »

  • carlos hernandez (3 días)
    Hola, hay alguna funcion k sirva para saber el correo…
  • steven (2 semanas)
    tengo un problema me sale este error cuando pongo data:…
  • lewis rod (3 semanas)
    https://t.me/joinchat/Hs_yUFG_xDVJ-PS3cWEYAw este es el enlace me equivoque.
  • lewis rod (3 semanas)
    https://t.me/joinchat/Hs_yUBDhw2Uk7D3D835GJQ grupo de telegram latino sudamericano peru, colombia, ecuador, chile,…
  • Harol (4 semanas)
    Todo el mundo da gracias porque no lo ha hecho,…
  • Renzo (4 semanas)
    Excelente.. Simple y efectivo. Gracias

Suscríbete al newsletter »

Proporciona tu correo electrónico a continuación y recibe las últimas noticias! Funciona con Feedburner de Google

Archivo »

Leer entrada anterior
Obtener la extension de un archivo subido con php

En este post voy a explicar como comprobar las extensiones de una imagen con una simple función en php podremos...

Cerrar