CGI - Временные файлы - PullRequest
       9

CGI - Временные файлы

1 голос
/ 07 января 2010

Я занимаюсь разработкой небольшого CGI-приложения (в C, с CGIC, http://www.boutell.com/cgic/). Моему приложению необходимо создать временное файл (пользователь загружает изображения, они сохраняются, изменяются различными способами, и затем отображается обратно пользователю).

Какие меры предосторожности следует предпринять при создании временных файлов?

Модифицированный образ предоставляется динамически сценарием CGI, который затем удаляет временный файл с диска:

Что-то вроде этого: <html><head><title>here's your modified image</title></head><body><img src="cgi-bin/genimage.cgi?uid=5423423 /></body>

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

Стоит ли периодически удалять неиспользуемые файлы?

Большое спасибо!

Ответы [ 2 ]

1 голос
/ 02 мая 2012

Если объем вашего хранилища ограничен и вы получаете неизвестное количество поступающих данных, вам нужно решить, что делать, когда есть больше данных, которые вы можете сохранить. Это придет так или иначе. Если вы притворяетесь, что предоставляете неограниченное хранилище, тогда будет DoS, когда вы не сможете.

Любая стратегия, вероятно, подпадает под следующие два (3, если возможно) пути:

Когда выше отметки уровня воды,

  1. сбросить самые старые / наименее требуемые данные, чтобы освободить место
  2. отбрасывать входящие данные, чтобы избежать переполнения
  3. приостанавливать поступающие данные до тех пор, пока не опустится ниже отметки уровня воды

2 и 3 вам все равно понадобится найти новое хранилище, поэтому что-то нужно будет удалить или вам понадобится больше памяти. 1 довольно самодостаточен, но может быть возможно удалить из него все старые полезные данные, отправив достаточно нового мусора. Создание системы ранжирования (последний доступ, наиболее доступный, загруженный привилегированным пользователем, объединение этих ...) и удаление наименее важных может быть наиболее сбалансированной вещью.

0 голосов
/ 07 января 2010

Использование CGI для прямого проектирования приложений сомнительно, то есть не веб-фреймворк / механизм приложений. Я бы предложил использовать Java для манипулирования изображениями, или обернуть его в lua, python или что-то в этом роде.

Если вы продолжите с C, убедитесь, что вы ограничиваете среду выполнения CGI, поместите его в тюрьму, проверьте этот пост для вдохновения, здесь другой. 1007 *

...