Un CSV puede llevar fórmulas donde esperabas texto
Un formulario recoge una respuesta y el sistema la exporta a un CSV. Hasta ahí parece una operación de datos. Pero cuando alguien abre el archivo en una hoja de cálculo, un valor puede interpretarse como una fórmula en lugar de texto. Ese cambio de contexto es el riesgo que OWASP llama CSV Injection.
La exportación no es una copia neutral
OWASP describe el problema cuando las aplicaciones incluyen entradas no fiables en archivos CSV. Un campo que empieza con un signo igual puede activar la interpretación de fórmulas. La guía también señala otros caracteres iniciales, como más, menos y arroba, y caracteres de control.
No hay que suponer que todas las respuestas son maliciosas. Hay que evitar que la intención del texto decida el comportamiento del programa que lo abre. Un comentario de formulario, un nombre importado o un valor recibido de un sistema externo deben tratarse según el formato de destino.
Las comillas no lo resuelven todo
Separadores y comillas forman parte del problema: un valor puede acabar en una celda distinta de la prevista si la construcción del CSV es incorrecta. Unir campos con comas no es un exportador suficiente. Utiliza una biblioteca de CSV y comprueba también cómo se interpretan los valores.
OWASP advierte de que algunas protecciones basadas en comillas o escape pueden dejar de funcionar en Excel después de guardar y volver a abrir el archivo. Por eso no conviene presentar una transformación sencilla como una protección universal para todos los programas y recorridos.
Define quién consumirá el archivo
Un CSV para leer manualmente en una hoja de cálculo y otro para importar en una aplicación no tienen necesariamente los mismos requisitos. Añadir un prefijo protector puede cambiar los datos originales y afectar a una importación posterior. Documenta ese compromiso antes de aplicarlo.
Prueba la exportación con valores que contengan separadores, comillas, saltos de línea e inicios de fórmula, en un entorno aislado y sin datos reales. Comprueba también el recorrido de guardar y reabrir con el programa destinatario. El objetivo es que el texto siga siendo texto, sin alterar en silencio el significado de los datos ni dar por segura una protección que no has probado.