Guía de serialización PHP — serialize, unserialize y seguridad

Guía de serialización PHP — serialize, unserialize y seguridad

serialize() y unserialize() con ejemplos: arrays, objetos, meta WordPress y conversión JSON. Riesgos de seguridad y cuándo preferir JSON.

13.04.2026
9 min de lectura
Compartir este artículo:
PHP
Serialización
Deserialización
JSON
Desarrollo
Seguridad
Tutorial

¿Qué es la serialización PHP?

La serialización PHP transforma estructuras (arrays, objetos, escalares) en una cadena binaria textual que puedes guardar en base de datos, escribir en un archivo o transmitir por red — y luego unserialize() reconstituye el valor. Es el mecanismo detrás de las sesiones PHP nativas, de muchos caches de aplicación y de metadatos WordPress. Para convertir o inspeccionar rápido PHP serializado sin instalar una extensión, usa nuestra herramienta de serialización PHP en línea. Esta guía cubre la sintaxis del formato, la comparación con JSON, los riesgos de unserialize() sobre datos no fiables y pistas concretas (WordPress, alternativas seguras). Para estructurar payloads web en lugar de PHP nativo, consulta también nuestra guía completa de minificación JSON y, cuando releas código compactado, un minificador JavaScript en línea o un desminificador JS para la depuración.

Sesiones y caches: formato compacto y nativo del ecosistema PHP
Interoperable con herramientas en línea para depurar blobs serializados (WordPress, exportaciones)
Comparación clara con JSON para elegir el formato adecuado (API vs almacenamiento PHP)
Toma en cuenta explícita de los riesgos de object injection y las mitigaciones
Conversión bidireccional JSON ↔ PHP útil para frontends y APIs REST

Dónde importa de verdad la serialización PHP

Sesiones, cache y plugins

Las sesiones PHP suelen almacenar datos serializados en el servidor o en un backend Redis/Memcached. Los frameworks y CMS también serializan opciones, colas de jobs o representaciones de objetos para rehidratarlas después. Entender el formato ayuda a diagnosticar datos corruptos o migrar a JSON.

Before optimization

Tamaño de archivos
Blob opaco
Tiempo de carga
Depuración difícil

After optimization

Tamaño de archivos
Estructura legible
Tiempo de carga
Inspección rápida con la herramienta
Casos de uso frecuentes

Estas son situaciones en las que te cruzarás con PHP serializado en producción:

Opciones y metadatos WordPress (transients, postmeta) a menudo en formato serializado
Caches de aplicación (clave → valor serializado) para no reconstruir objetos costosos
Colas o logs internos que embarcan snapshots de arrays PHP
Interop: exportar una estructura PHP a una cadena antes de convertir a JSON en el lado API
Vista general del formato

Antes de una migración o un reemplazo SQL, visualiza las anidaciones (arrays dentro de arrays, cadenas tipadas) para no corromper las longitudes declaradas en los segmentos s:n:"…".

WordPress, migraciones e higiene

WordPress: options, transients, metas

Muchas metas se almacenan serializadas. Antes de una búsqueda/reemplazo SQL masiva (cambio de URL), deserializa y vuelve a serializar de forma limpia — si no, rompes la longitud de las cadenas en el formato s:n:"...". Usa herramientas dedicadas o scripts PHP, y verifica con la herramienta FastMinify sobre copias.

Probar siempre en un staging con una base copiada
Preferir las API WordPress (update_option, metadata) a los hacks SQL en bruto
Si expones una API REST, serializa en JSON en la salida — no PHP serialize público
Checklist de seguridad y mantenimiento

Alinéate con las recomendaciones OWASP: ninguna deserialización de datos arbitrarios, registro de anomalías, rotación de secretos si un cache pudo envenenarse.

Firmar o cifrar los blobs sensibles almacenados fuera de la sesión del servidor
Acoplar JSON en el front y validación (esquema) con minify JSON para los payloads de producción
Documentar los campos que siguen en PHP serialize para planificar su extinción
Formar a los equipos: el formato no es un mecanismo de seguridad por sí mismo

serialize(), unserialize() y lectura del formato

De PHP a una cadena serializada

La función serialize() produce una representación textual tipada; unserialize() restaura el valor. Ejemplo mínimo con un array asociativo:

Antes

<?php $user = ['id' => 42, 'name' => 'Ada', 'roles' => ['editor', 'reviewer']]; echo serialize($user);

Después

a:3:{s:2:"id";i:42;s:4:"name";s:3:"Ada";s:5:"roles";a:2:{i:0;s:6:"editor";i:1;s:8:"reviewer";}}
Leer la notación tipo a tipo

Cada segmento empieza por un código de tipo seguido de dos puntos. Saber leer este formato ayuda a depurar sin ejecutar código arbitrario sobre datos desconocidos.

a:N:{...} : array con N entradas (pares clave → valor para arrays asociativos)
i:123 ; d:3.14 ; b:0|1 : entero, flotante, booleano
s:n:"..." : cadena de longitud n bytes (cuidado con la codificación UTF-8)
O:8:"ClassName" : objeto — ahí es donde un unserialize() no controlado se vuelve peligroso
Para inspeccionar visualmente: pega la cadena en nuestra herramienta en línea en lugar de evaluarla en producción

Serializar, deserializar y convertir con FastMinify

Workflow rápido en el navegador

Pega una cadena serializada o JSON, elige la operación (embellecer, minificar, conversión JSON ↔ PHP). El procesamiento se queda en el cliente: práctico para una exportación WordPress o una API que devuelve PHP serializado histórico.

1

Pegar el dato

Importa la cadena de la base (postmeta, option, cache) o un JSON a convertir.

2

Elegir la acción

Serializar, deserializar o convertir hacia/desde JSON según tu necesidad inmediata.

3

Validar fuera de producción

Compara el resultado con lo que espera tu aplicación; no reinyectes nunca unserialize() sobre datos no aprobados.

¿Por qué una herramienta en línea aquí?

Los equipos mixtos (PHP + frontend) ganan tiempo para inspeccionar un blob sin montar un entorno completo.

Ideal para un one-shot: no hace falta composer/npm para la lectura
Complementa un minificador JSON (página /es/minify-json) cuando normalizas payloads
Útil en soporte al cliente para explicar visualmente un problema de metadatos
Gratuito y orientado a la privacidad: no se envían al servidor los datos introducidos

JSON, PHP serialize y seguridad

JSON vs PHP serialize: ¿qué elegir?

JSON es universal para APIs y navegadores; PHP serialize es idiomático para el almacenamiento interno PHP rico en tipos. Para intercambios HTTP, prefiere JSON; para blobs gestionados solo por PHP, serialize puede seguir siendo pertinente.

Ejemplo básico

<?php $data = ['ok' => true, 'count' => 3]; $json = json_encode($data, JSON_THROW_ON_ERROR); // {"ok":true,"count":3}

Configuration

<?php $same = ['ok' => true, 'count' => 3]; $php = serialize($same); // a:2:{s:2:"ok";b:1;s:5:"count";i:3;}

Uso

// Interop: json_decode para las entradas API; unserialize SOLO sobre datos firmados/controlados.
unserialize() y datos no fiables

Nunca hagas unserialize() de una entrada de usuario en bruto: riesgo de inyección de objeto y de ejecución de gadgets (__wakeup, __destruct). Prefiere JSON + esquema, o formatos firmados (HMAC) y allowlists de clases.

Ejemplo básico

<?php // Peligroso — a evitar en una entrada HTTP // $obj = unserialize($_POST['payload']);

Uso

<?php $payload = $_POST['json'] ?? '{}'; $safe = json_decode($payload, true, 512, JSON_THROW_ON_ERROR); // Array escalar: sin instanciación de objetos arbitrarios
Alternativas en el almacenamiento

Para grandes volúmenes binarios, igbinary o msgpack reducen el tamaño y se quedan en una infraestructura controlada — fuera del alcance del navegador, pero útil como complemento de una estrategia JSON para la API pública.

Configuration

// Ejemplo conceptual (extensión igbinary requerida) // $packed = igbinary_serialize($data);

Uso

// Despliegue: migrar de forma progresiva los blobs legacy a JSON + validación de esquema

Conclusión

La serialización PHP sigue siendo un pilar del almacenamiento interno y de ecosistemas como WordPress, pero impone una disciplina estricta del lado unserialize(). Para el debug rápido y las conversiones JSON, una herramienta en línea fiable acelera el diagnóstico sin tocar la producción. Reserva JSON para las fronteras de red, PHP serialize para las zonas de confianza, y mide siempre el impacto antes de migrar.

Serializa, deserializa o convierte tus datos PHP en unos clics

Repetir las conversiones sobre una copia de datos antes del despliegue
Cubrir los caminos críticos con tests que validen json_encode/json_decode
Enriquecer el mallado: guía JSON del blog y herramientas minify asociadas
Vigilar las alertas de seguridad ligadas a gadgets de objetos en tus dependencias
Compartir este artículo
Compartir este artículo: