Seguridad: qué no debe almacenar nunca
Evite almacenar tokens o información personal identificable en localStorage
Seguridad: qué no debe almacenar nunca es una lección gratuita de HTML Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de HTML Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de HTML Academy incluye 4 lecciones en total.
El almacenamiento es texto sin cifrar
localStorage y sessionStorage guardan los datos sin cifrar en el disco, dentro del perfil del usuario. Cualquier proceso con acceso al sistema de archivos, incluido un malware, una herramienta de copia de seguridad u otro usuario que haya iniciado sesión, puede leer todos los valores almacenados sin pasar por el navegador.
Accesible para cualquier script
Todos los scripts que se ejecutan en el origen comparten el mismo Storage. Un ataque XSS exitoso, un SDK de terceros comprometido o una extensión maliciosa del navegador pueden llamar a localStorage.getItem y exfiltrar todos los valores almacenados. No existe aislamiento entre scripts.
Nunca almacene tokens de autenticación
No almacene tokens de sesión, JWT, refresh tokens ni claves de API en localStorage. Si un atacante inyecta una sola línea de JavaScript, el token se filtra de inmediato. Use cookies con los atributos httpOnly, Secure y SameSite para que el token nunca sea accesible desde JavaScript.
Nunca almacene contraseñas
Almacenar contraseñas de cualquier forma —en texto plano, con hash o cifradas— es incorrecto en el cliente. Aplicar hash en el cliente no ayuda cuando el atacante puede leer el hash y reutilizarlo. La gestión de contraseñas debe realizarse por completo en el servidor mediante un hash de contraseñas específico, como bcrypt.
Nunca almacene datos de tarjetas de crédito
PCI-DSS prohíbe almacenar números de tarjeta, CVV, datos de la banda magnética o fechas de vencimiento en el almacenamiento del cliente. En su lugar, use un proveedor de pagos con tokenización (Stripe, Braintree, Adyen) que devuelva un token de corta duración vinculado a su origen.
Nunca almacene identificadores personales
Los documentos de identidad oficiales, las fechas de nacimiento completas, las direcciones particulares y los datos médicos atraen la atención de los organismos reguladores (GDPR, HIPAA) y de los atacantes. Almacene únicamente lo necesario para la sesión actual, solicítelo de nuevo cuando sea necesario y deje que el servidor conserve la fuente de verdad.
XSS multiplica el daño
Un fallo de XSS que filtra document.cookie ya es grave. El mismo fallo en una página que almacena tokens en localStorage entrega al atacante todos los valores almacenados de una sola vez. Trate localStorage como una superficie en la que «si se compromete un script, se compromete todo».
El cifrado no le protege
Cifrar valores con una clave que también se encuentra en JavaScript no ofrece una protección real: el atacante que puede leer el texto cifrado también puede leer la clave. Los secretos reales deben permanecer en el servidor y volver a emitirse; nunca deben persistirse en el cliente.
Elementos seguros para almacenar
Las preferencias de la interfaz (tema, barra lateral contraída, idioma), los indicadores de funcionalidad no confidenciales, el contenido de formularios en borrador y el estado efímero de asistentes son totalmente seguros. De todos modos son visibles para el usuario, y su filtración no permite tomar el control de la cuenta.
localStorage.setItem("theme", "dark");
localStorage.setItem("sidebar:collapsed", "true");
localStorage.setItem("draft:post-123", draftMarkdown);Use cookies para la autenticación
Emita la autenticación mediante Set-Cookie: token=...; HttpOnly; Secure; SameSite=Strict. La marca HttpOnly impide que JavaScript acceda a la cookie, lo que neutraliza la mayoría de las cargas XSS que roban tokens, incluso cuando existen otros fallos en la página.
Medidas de mitigación para el uso del almacenamiento
Si debe almacenar en caché datos que parecen confidenciales, limite estrictamente su alcance (TTL corto, borrado al cerrar sesión y eliminación al cerrar la pestaña mediante sessionStorage), aplique una directiva de seguridad de contenido estricta para bloquear scripts inyectados y audite todos los scripts de terceros que se ejecuten en páginas autenticadas.
Comprobación de conocimientos
¿Por qué se considera un riesgo de seguridad almacenar tokens de autenticación en localStorage?
Resumen
Web Storage es texto sin formato, cualquier script puede leerlo y se comparte por origen. Nunca almacene allí tokens de autenticación, contraseñas, datos de pago ni información personal regulada. Mantenga los secretos en cookies httpOnly y reserve localStorage para estados inofensivos de la interfaz que el usuario podría ver de todos modos.
Preguntas frecuentes
¿La lección «Seguridad: qué no debe almacenar nunca» es gratis?
Sí — el texto completo de «Seguridad: qué no debe almacenar nunca» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de HTML Academy, actualiza a CoddyKit PRO. El curso de HTML Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Seguridad: qué no debe almacenar nunca»?
Evite almacenar tokens o información personal identificable en localStorage Practicas HTML Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar HTML Academy?
No se requiere experiencia previa. HTML Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Seguridad: qué no debe almacenar nunca»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de HTML Academy?
Sí. Cada lección de HTML Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- localStorage frente a sessionStorage
- Obtener, establecer y eliminar elementos
- Escuchar eventos de almacenamiento
- Seguridad: qué no debe almacenar nunca