Главная мысль
Не считайте CSV безопасным только потому, что в нём нет макросов: табличное приложение может интерпретировать начальные специальные символы как формулы. Безопасно формируйте экспорт и проверяйте внешние файлы.
Не допускайте выполнения пользовательских значений как формул
CSV (Comma-Separated Values) — текстовый формат строк и столбцов с разделителями; смысл значений определяет приложение, которое открывает файл. Начальные =, +, - или @ в пользовательском значении могут превратить его в формулу. В программе экспорта корректно кодируйте каждую ячейку и обезвреживайте значения, которые могут выполняться как формулы. Проверки первого символа недостаточно: разделители и кавычки могут создать новую ячейку. Включите в тесты табуляцию и переводы строк. Проверьте файл в используемой версии Excel, LibreOffice или Sheets, в том числе после сохранения и повторного открытия. Одни кавычки или единый префикс не дают гарантии для всех программ; проверяйте также влияние на последующий машинный импорт.
Проверяйте внешний CSV как недоверенный ввод
До загрузки внешнего CSV в рабочую систему проверьте отправителя, столбцы, кодировку, разделитель и число строк. Для первого просмотра используйте текстовый просмотрщик, который не выполняет формулы; не открывайте подозрительный файл в обычном табличном приложении. Программа импорта должна проверять тип, длину и допустимые значения полей. На образце убедитесь, что сохранились начальные нули в идентификаторах, даты и десятичные разделители. Перед массовым импортом проведите пробную загрузку и подготовьте способ отменить ошибочные изменения. Расширение файла не подтверждает его безопасность.
Ограничьте доступ к конфиденциальным выгрузкам и срок их хранения
CSV хранит данные в обычном текстовом виде и упрощает передачу клиентских, кадровых и операционных данных. Экспортируйте только нужные столбцы, используйте утверждённое хранилище, ограничьте доступ получателями и задайте срок удаления копии. Перед отправкой по электронной почте или в личное облако проверьте правила организации по передаче данных. Резервное копирование и контроль изменений основной базы организуйте отдельно: сам CSV не обеспечивает версионирование и восстановление.
