CSV из ответа AI открывает формулы: как проверить экспорт
Проверяйте недоверенные ячейки как данные для целевого табличного редактора. Корректное экранирование CSV защищает структуру файла, но не гарантирует, что редактор не интерпретирует текст как формулу.
Разберём рабочий случай
Агент выгружает отзывы клиентов в таблицу. Один отзыв начинается с символа равенства. Обычный CSV writer правильно расставляет кавычки, но после открытия редактор может воспринять ячейку как выражение. Источник может быть клиентским текстом, документом или самой генерацией: автоматический экспорт переносит недоверенное содержимое из чата в другую среду исполнения. В учебном примере используется безвредное выражение, а не эксплуатация реального компьютера.
Что изменить
Сначала определите назначение файла: машинный обмен данными или просмотр человеком. Для просмотра можно выбрать формат и библиотеку с явным текстовым типом ячейки, отдельно проверив поведение экспорта. При CSV нейтрализацию согласуйте с редактором и проверьте повторное сохранение: универсальной обработки для всех потребителей нет. Простая кавычка или табуляция меняет сами данные и может мешать следующему импорту. Не выдавайте такие изменения за сохранение исходного текста без потерь.
import csv, io
buf = io.StringIO()
csv.writer(buf).writerow(["=1+1"])
buf.seek(0)
assert next(csv.reader(buf))[0] == "=1+1"Как проверить результат
| Проверка | Ожидаемое поведение |
|---|---|
| Отзыв с безопасной формулой =1+1 | В согласованном режиме просмотра значение отображается как текст; итог проверен именно в целевом редакторе. |
| Текст с разделителем и кавычками | Сохраняется одна ячейка, новые столбцы не появляются; проверка структуры отделена от проверки исполнения формулы. |
| Файл сохранён и открыт повторно | Выбранная защита сохранилась или ограничение явно зафиксировано; один удачный первый просмотр не считается достаточным. |
Следующий Python-пример показывает только сохранность строки после записи и чтения CSV. Он не запускает Excel и не доказывает, как конкретный редактор обработает ячейку: это отдельная обязательная проверка интерфейса экспорта.
LLM-приложение отвечает и за безопасность файлов, которые пользователь получает после генерации. В платном курсе LLM Security PRO: Prompt Injection, утечки, tool-abuse можно продолжить изучение соответствующего инженерного направления. Перед покупкой сравните программу и открытые материалы со своей задачей.
Документация для проверки технических деталей: OWASP: CSV Injection.
Следующий шаг: Безопасность LLM-приложений: практические проверки. По смежным вопросам: HTML из ответа LLM: как не превратить чат в XSS, Картинки в Markdown-ответе AI: как они могут утекать данные.
