Descripcion del controlador
Se define un controlador con las siguientes caracteristicas, capacidad de redireccion la vista principal de login, capacidad de registro sobre los intentos de login en el log definido dentro de 3. Programar controladores, resources y routes en laravel esto servira como medio de registro.
showLoginForm
Controlador para mostrar la vista de login de la Escuela Militar de Ingenieria en su sistema de cargado de notas
Controlador para la dirección definido y usando en routes.php
public function showLoginForm()
{
return view('auth.login'); # esto redirige la peticion la vista login.blade.php
}Diagrama de comunicación y dirección del patron Modelo Vista Controlador:
graph TD style Cliente fill:#f9f,stroke:#333,stroke-width:3px style Controlador fill:#9f9,stroke:#333,stroke-width:1px URL["URL / Ruta"] Route["Route.php / Redirector"] Controlador["Controlador / showLoginForm u otro metodo"] Cliente["Cliente (navegador)"] Vista["Vista (Blade)"] Cliente --> URL URL --> Route Route --> Controlador Controlador --> Vista Vista --> Cliente URL --> Vista
Diagrama por Krypton612 - Ronald Diaz
El controlador devuelve una vista blade la cual este dentro de 3.2 Vista resource e integración con controlador .
login(Request $request)
Controlador para registrar todos los inicios o intentos de inicio de sesion realizados en el controlador showLoginForm y guardarlos en el archivos de logs para el stack ELK
Funcion del controlador que permite dichas confirmaciones web_php:
public function login(Request $request)
{
// Capturar datos del intento
$data = [
'event' => 'honeypot_login_attempt',
'username' => $request->input('username'),
'password' => $request->input('password'),
'captcha' => $request->input('userCaptcha'),
'ip' => $request->ip(),
'user_agent' => $request->header('User-Agent'),
'timestamp' => now()->toDateTimeString(),
];
// Guardar en logs JSON
Log::channel('honeypot')->info('Login attempt detected', $data);
// Respuesta falsa para el atacante
return back()->withErrors([
'username' => 'Las credenciales son incorrectas.',
]);
}Ejemplo de registro capturado:
{
"message": "Login attempt detected",
"context": {
"event": "honeypot_login_attempt",
"username": "test",
"password": "test",
"captcha": "T4VC",
"ip": "127.0.0.1",
"user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36",
"timestamp": "2025-09-22 04:14:50"
},
"level": 200,
"level_name": "INFO",
"channel": "local",
"datetime": "2025-09-22T04:14:50.222247+00:00",
"extra": {}
}Archivo honeypot.json
Diagrama de comunicación y ejecución del controlador
graph TD style Cliente fill:#f9f,stroke:#333,stroke-width:3px style HoneypotRegistro fill:#9f9,stroke:#333,stroke-width:1px URL["URL / Ruta"] Route["Route.php / Redirector"] Controlador["Controlador / login u otro metodo"] PostHttp["Request / HTTP post"] Cliente["Cliente (navegador)"] Datos["Informacion Ingresada"] Vista["Vista (Blade)"] HoneypotRegistro["Registro de intrusion"] Cliente --> URL URL --> Route Route --> Controlador Controlador --> Vista Vista --> Cliente Cliente --> Datos Datos --> PostHttp PostHttp --> Controlador Controlador --> HoneypotRegistro
Diagrama de Krypton612 - Ronald Diaz
FuzzingController - detect
Controlador para registrar todas las respuestas 404 registrado al fallar o no encontrar la pagina, muy importante cuando existen intentos de fuzzing agresivos.
Funcion del controlador que permite dichos registros de intentos fuzz: web_php
public function detect(Request $request)
{
// Captura los datos relevantes
$data = [
'event' => 'honeypot_fuzzing_attempt',
'method' => $request->method(),
'url' => $request->fullUrl(),
'payload' => $request->all(), // todos los parámetros enviados
'ip' => $request->ip(),
'user_agent' => $request->header('User-Agent'),
'timestamp' => now()->toDateTimeString(),
];
// Guardar en logs JSON en el canal honeypot
Log::channel('honeypot')->warning('Fuzzing attempt detected', $data);
abort(404);
}Ejemplo de registro capturado:
{
"message": "Fuzzing attempt detected",
"context": {
"event": "honeypot_fuzzing_attempt",
"method": "GET",
"url": "http://localhost:8000/dexa3",
"payload": [],
"ip": "127.0.0.1",
"user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36",
"timestamp": "2025-09-23 04:08:31"
},
"level": 300,
"level_name": "WARNING",
"channel": "local",
"datetime": "2025-09-23T04:08:31.914055+00:00",
"extra": {}
}Archivo honeypot.json
Diagrama de comunicación y ejecución del controlador fuzzing
graph TD Nodos Cliente["Cliente navegador"] URL["URL / Ruta solicitada"] Route["routes/web.php o api.php"] Controlador["FuzzingController - método detect"] RequestHttp["Request HTTP"] FuzzingRegistro["Registro de intento de fuzzing"] %% Flujo Cliente --> URL URL --> Route Route --> Controlador Cliente --> RequestHttp RequestHttp --> Controlador Controlador --> FuzzingRegistro Controlador --> Cliente
Diagrama de Krypton612 - Ronald Diaz