Guías
Inyección de fórmulas en CSV y exportaciones seguras
Las comillas CSV conservan los límites de los campos, pero no impiden que una hoja de cálculo interprete una celda como fórmula. Elige una estrategia para la aplicación de destino y pruébala allí.
¿Qué formato deberías elegir?
Elige según la función de cada archivo en tu flujo de trabajo.
- CSV para procesamiento entre sistemas → Conserva los valores y sigue la especificación del analizador receptor
- CSV para abrir en una hoja de cálculo → Elige una salida que trate los valores no confiables como texto y pruébala en la aplicación de destino
- ¿Basta con usar comillas? → Proteger la sintaxis CSV y evitar fórmulas son cosas distintas
- ¿Qué saneamiento es correcto? → Las aplicaciones se comportan de forma diferente; no des por universal una transformación
Una celda CSV puede interpretarse como fórmula
Si un CSV contiene valores de un formulario web o una base de datos, Excel, LibreOffice Calc u otra hoja de cálculo puede interpretar como fórmula una celda que empiece por `=`. Si un atacante controla ese dato, la fórmula podría exponer información o causar otros daños por el comportamiento de la aplicación o las acciones del usuario. El impacto depende del programa y su configuración.
Las comillas CSV no bloquean las fórmulas
Encerrar un campo entre comillas dobles y duplicar las comillas internas es un tratamiento de sintaxis: mantiene comas y saltos de línea dentro del campo previsto. Que la hoja de cálculo trate esa celda como fórmula es otra fase. Escapar bien el CSV no demuestra por sí solo que se haya mitigado la inyección.
Elige una salida de texto para la aplicación de destino
Distingue el CSV para procesamiento automático del que abrirán personas en una hoja de cálculo. Para este último, considera una biblioteca o formato que permita guardar el valor explícitamente como texto. Si necesitas CSV, prueba cómo la aplicación de destino trata valores que comienzan por `=`, `+`, `-` o `@` y elige una medida específica. Anteponer una tabulación o un apóstrofo puede afectar a la compatibilidad o cambiar el valor, por lo que no es universal.
Ten en cuenta los delimitadores y los límites entre celdas
Las comas, los puntos y coma, las comillas y los saltos de línea en valores no confiables pueden crear celdas inesperadas si el archivo se construye mal. Una celda nueva podría empezar con un indicador de fórmula. Usa una biblioteca CSV estándar para codificar los campos y trata por separado la interpretación de fórmulas en la aplicación de destino. No dependas de concatenar cadenas ni de revisar solo el primer carácter.
Prueba abriendo, guardando y volviendo a abrir
Prueba casos límite como espacios iniciales, caracteres de control, delimitadores y comillas en las hojas de cálculo admitidas. Incluye el ciclo de guardar y volver a abrir. OWASP advierte que Excel puede quitar comillas o escapes al guardar y reabrir un CSV, lo que podría reactivar un valor neutralizado. Conserva aparte los datos de origen para sistemas y la salida transformada para hojas de cálculo.
Formatos a considerar
CSV
Adecuado para: Intercambiar tablas sencillas cuando el destinatario trata el contenido de las celdas como datos
Menos adecuado para: Exportar valores no confiables para hojas de cálculo sin medidas específicas ni pruebas
Antes de exportar
- Las comillas y los escapes CSV no son una barrera contra la ejecución de fórmulas.
- Las hojas de cálculo difieren en detección, advertencias y comportamiento al volver a guardar.
- Antes de distribuir CSV con datos no confiables, pruébalo en la aplicación de destino, también tras guardarlo y reabrirlo.