🧰 Validación y seguridad en APIs

🧰 Validación y seguridad en APIs

Proteger tus endpoints y validar los datos de entrada

La validación de datos y la seguridad son esenciales al desarrollar una API. Laravel ofrece herramientas poderosas como Form Request Validation, middleware y tokens para proteger tus endpoints contra entradas no válidas o accesos no autorizados.

📋 Validación básica en controladores API

Puedes validar los datos directamente en el método del controlador usando $request->validate().

app/Http/Controllers/Api/ProductController.php
public function store(Request $request) {
    $validated = $request->validate([
        'name' => 'required|string|max:100',
        'price' => 'required|numeric|min:0',
        'description' => 'nullable|string',
    ]);

    $product = Product::create($validated);
    return response()->json($product, 201);
}
      

Si los datos no son válidos, Laravel devolverá automáticamente una respuesta JSON con los errores y código 422.

🧪 Simulador de validación

Introduce un producto y observa si la API lo acepta o rechaza:

🔐 Seguridad: Autenticación con Tokens

Laravel ofrece varias formas de proteger tus APIs:

  • Sanctum: ideal para APIs personales o SPAs (Single Page Applications).
  • Passport: solución completa basada en OAuth2 para autenticación robusta.

Con Laravel Sanctum puedes proteger tus rutas fácilmente:

routes/api.php
use Illuminate\Support\Facades\Route;

Route::middleware('auth:sanctum')->group(function () {
    Route::get('/user', function (Request $request) {
        return $request->user();
    });
    Route::get('/products', [ProductController::class, 'index']);
});
      

Para acceder a estas rutas, el cliente debe enviar un token válido en la cabecera HTTP:

Authorization: Bearer TU_TOKEN_AQUI
    

✅ Buenas prácticas

  • Valida **todos** los datos que ingresen a la API.
  • Usa Form Requests para mantener la lógica de validación separada del controlador.
  • Protege tus rutas sensibles con middleware como auth:sanctum.
  • Evita exponer datos sensibles en respuestas JSON.

Publicar un comentario

0 Comentarios