Como Bloquear Automaticamente a alguien usando una escritura PHP

En este articulo te proveemos con una escritura que automaticamente va abloquear a las personas usando una escritura PHP y archivo htaccess.

Esto puede ayudar por un numero de razones. Por ejemplo, puedes usar esta escritura para banear (denegar el acceso) a las personas que estan husmeando en tu sitio web o para banear robots que no respetan tu archivo robots.txt.

Esta es la sección PHP de la escritura. Para usar esto, crea un archivo en el directorio public_html y agrega el siguiente contenido...

<?php
 
 
// Consigue la dirección IP del visitante para que podamos trabajar con el mas tarde.
$ip = $_SERVER['REMOTE_ADDR'];
 
// Aqui es donde extraemos el archivo y ubicación del archivo htaccess. 
//Si esta en el mismo directorio que el archivo php, dejalo como esta. $htaccess = '.htaccess';   //Esto extrae los contenidos actuales de tu archivo htaccess para que podamos buscarlo despues. $contents = file_get_contents($htaccess, TRUE) OR exit('Unable to open .htaccess');   // Busquemos el archivo htaccess para ver si hay algun ban en el lugar. $exists = !stripos($contents, 'deny from ' . $ip . "\n") OR exit('Already banned, nothing to do here.');   // Aqui solo extraemos algunos detalles que podemos usar despues. $date = date('Y-m-d H:i:s'); $uri = htmlspecialchars($_SERVER['REQUEST_URI'], ENT_QUOTES); $agent = htmlspecialchars($_SERVER['HTTP_USER_AGENT'], ENT_QUOTES); $agent = str_replace(array("\n", "\r"), '', $agent);   // Si te gustaria que te mandaran un correo por cada ban que ocurra, pon tu correo electronico // DENTRO de los cotejos abajo. (Ejemplo: 'mi@correo.com') $email = '';   // Aqui es donde podemos poner las IP que no queremos que se baneen. Simplemente remueve // el // que esta en frente de una de las direcciones IP de ejemplo que tenemos debajo y agrega // la dirección IP que no quieres baneada. Asegurate de dejar los cotejos (') intactos // y la coma al final. Agregando a una persona baneada DESPUES de la lista no baneada no // lo removera de ser baneado. Debes abrir el archivo htaccess y ubicar // su ban a mano y removerlo. $whitelist = array( // '123.123.123.123', // '123.123.123.123', // '123.123.123.123', );     // Esta sección previene a las personas de ser mandadas a esta escritura por error // por un enlace, imagen, o cualquier otra fuente. Si no quieres verificar de donde viene // puedes remover la siguiente linea. Asegurate tambien de remover // el ultimo } que esta al final de esta escritura. if (empty($_SERVER['HTTP_REFERER'])) {   // Esta sección escribira la dirección IP al archivo htaccess y a cambio // banear la dirección. Tambien sin embargo verificara la lista no baneable mas arriba para ver // si se deberia banear o no. if (in_array($ip, $whitelist)) {   // Si el usuario esta en la lista no baneable imprimira un mensaje y terminara la escritura. echo "Hello user! Because your IP address ({$ip}) is in our whitelist, you were not banned for attempting to visit this page. End of line.";   } else {   // Si el usuario NO esta en la lista no baneable... lo tenemos que banear $ban = "\n# The IP below was banned on $date for trying to access {$uri}\n"; $ban .= "# Agent: {$agent}\n"; $ban .= "Deny from {$ip}\n";   file_put_contents($htaccess, $ban, FILE_APPEND) OR exit('Cannot append rule to .htaccess');   // Envia correo electronico si especifican la dirección if (!empty($email)) { $message = "IP Address: {$ip}\n"; $message .= "Date/Time: {$date}\n"; $message .= "User Agent: {$agent}\n"; $message .= "URL: {$uri}";   mail($email, 'Website Auto Ban: ' . $ip, $message); }   // Envia cabecera 403 al navegador y imprime una pagina HTML header('HTTP/1.1 403 Forbidden', TRUE); echo '<html><head><title>Error 403 - Banned</title></head><body> <center><h1>Error 403 - Forbidden</h1>Hello user, you have been banned from accessing our site. If you feel this ban was a mistake, please contact the website administrator to have it removed.<br /> <em>IP Address: '.$ip.'</em></center></body></html>';   }   }

La proxima sección es el archivo basico htaccess que necesitaras. Crea el archivo .htaccess en tu directorio public_html (o edita la que ya tienes) y agrega lo siguiente en la parte superior...

<FilesMatch 403.shtml>
Order Allow,Deny
Allow From All
</FilesMatch>
 

Ahora agrega lo siguiente al fondo del archivo htaccess.

############### COMIENZA BANS ###############
 

Ahora cualquiera que intente acceder a block.php (por cualquier razón) sera automaticamente bloqueado (a menos que lo hayas agregado a la lista no baneable).

 

¿Fue útil la respuesta? 0 Los Usuarios han Encontrado Esto Útil (0 Votos)