Cómo crear una protección básica para tu sitio web usando PHP

Cómo crear una protección básica para tu sitio web usando PHP

Proteger un sitio web no siempre requiere herramientas complejas o servicios de terceros. A veces, una capa simple de validación puede filtrar bots básicos o accesos no deseados. En este post te muestro cómo hice mi propio sistema de protección web en PHP hace algunos años — y aunque no es perfecto, sigue siendo útil para proyectos pequeños o educativos.


🧠 ¿Qué hace este sistema?

  • Detecta y bloquea bots comunes analizando cabeceras como User-Agent, Referer, etc.
  • Redirige accesos sospechosos a una página de advertencia.
  • Puedes proteger archivos con contraseña.
  • Es liviano, fácil de integrar y 100% PHP puro.


📥 Descarga del proyecto

Repositorio en GitHub:

🔗 https://github.com/spacehowen/web-protection

Puedes clonarlo con Git:

git clone https://github.com/spacehowen/web-protection.git

O descargarlo como archivo ZIP y extraerlo en tu servidor.


📁 Estructura del proyecto

web-protection/
├── index.php              ← Página protegida de ejemplo
├── web_protection.php     ← Lógica de bloqueo y detección
├── asset/
│   └── denied.html        ← Página de advertencia


🧪 Cómo funciona


1. Análisis de cabeceras

El sistema revisa si las cabeceras HTTP son típicas de navegadores reales. Por ejemplo:

  • User-Agent vacío o que contiene “curl”, “wget”, “python” → bloqueado
  • Sin Referer o Accept-Languagesospechoso


2. Redirección a página de advertencia

Si algo huele raro, el visitante es redirigido a asset/denied.html.


3. Protección con contraseña

Puedes activar una contraseña manual. En el código encontrarás:

$lock = md5(sha1('password'));

🔒 ¡Aquí cambias la contraseña!

Reemplaza 'password' por tu propia clave:

$lock = md5(sha1('MiClaveSegura123'));

Nota: Este método no es seguro para producción. Es mejor usar password_hash() y password_verify() si vas a proteger contenido sensible.


⚙️ Cómo integrarlo en tu sitio

En cualquier archivo PHP que quieras proteger, simplemente agrega al inicio:

<?php
include 'web_protection.php';
?>

Esto activará la lógica de protección en esa página.


🛑 Personaliza la página de advertencia

Edita el archivo:

asset/denied.html


Puedes poner tu mensaje, imagen o incluso redirigir a una página externa después de unos segundos.

Ejemplo básico:

<h1>Acceso denegado</h1>
<p>Hemos detectado actividad sospechosa desde tu navegador.</p>


🚧 Limitaciones

Este sistema es básico, por lo tanto:

  • No detiene bots avanzados ni ataques dirigidos.
  • No incluye CAPTCHA ni protección contra DDoS.
  • No tiene logs de IPs ni integración con APIs externas.

Pero… cumple muy bien su objetivo: filtrar el tráfico más ruidoso y automatizado de forma simple.


🔧 ¿Qué puedes mejorar?

Si te interesa seguir desarrollándolo, podrías:

  • Agregar validación por JavaScript para detectar navegadores reales.
  • Incluir un sistema de logs con IP y hora.
  • Mostrar un CAPTCHA como segunda validación.
  • Integrarlo como middleware en proyectos más grandes.


✅ Conclusión

Este sistema de protección web fue uno de mis primeros proyectos, y aunque es sencillo, me ayudó a entender conceptos clave de seguridad y cómo funciona el tráfico HTTP. Hoy en día lo usaría solo como una primera capa de defensa, pero sigue siendo una excelente herramienta educativa o para sitios personales.


¿Te animas a probarlo o a crear el tuyo?

🧑‍💻 Código completo aquí: https://github.com/spacehowen/web-protection

Comentarios
¿Quieres comentar?

Inicia sesión o regístrate para participar en la conversación


Comentarios (0)

Aún no hay comentarios. ¡Sé el primero en comentar!