Перейти к содержимому

Что происходит с файлом, пока идёт конвертация

Куда файл попадает после загрузки, кто его читает, сколько он живёт на сервере и почему ссылку на результат нельзя подобрать перебором.

Загружать документ на чужой сервер — действие, к которому стоит относиться осознанно. Ниже — то, что происходит с файлом на самом деле, без формулировок вроде «мы заботимся о вашей безопасности».

Загрузка и проверка

Файл принимается целиком и сохраняется во временное хранилище под случайным идентификатором. Имя, которое было у файла на вашем диске, в путь не попадает: оно нужно только для того, чтобы вернуть результат с понятным названием.

Дальше содержимое проверяется по сигнатуре — первым байтам файла, — а не по расширению. Это нужно и для удобства (переименованный файл распознаётся правильно), и для безопасности: файл с расширением картинки, внутри которого лежит что-то другое, до движка не доедет.

Обработка

Задание встаёт в очередь, и его забирает рабочий процесс. Конвертацию выполняют обычные инструменты — те же, что стоят на компьютерах у людей: ffmpeg для видео и звука, офисный движок для документов, библиотеки обработки изображений. Каждое задание работает во временном каталоге, ограничено по времени и памяти и не имеет доступа ни к чему за пределами своей папки.

Ничего, кроме запрошенного преобразования, с файлом не делается: содержимое не индексируется, не анализируется и не используется для обучения чего бы то ни было.

Ссылка и удаление

Адрес для скачивания содержит случайный идентификатор длиной, которая исключает перебор: угадать чужую ссылку нельзя, а список выданных ссылок нигде не публикуется. Через час после создания задания исходный файл и результат удаляются по расписанию, и ссылка перестаёт работать.

Час — это компромисс: достаточно, чтобы вернуться к вкладке после отвлечения, и мало, чтобы файл где-то залежался. Если результат нужен раньше и файлы больше не нужны, их можно удалить сразу — кнопка появляется рядом со ссылкой на скачивание.

Что остаётся

После удаления файлов остаётся обезличенная запись: какое направление, сколько заняло, чем закончилось. По ней видно, какие преобразования подводят и где чинить движок. Ни содержимого, ни имени файла, ни адреса в этой записи нет. IP-адрес хранится только как необратимый хеш и нужен ровно для одного — не дать одному клиенту занять очередь целиком.

Что открыть после статьи

Все материалы раздела «Разборы и инструкции»