1

我正在开发一个小的 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>

然而,恶意用户可以上传图像并且从不请求修改后的图像,因此会填满硬盘。

我应该定期删除未使用的文件吗?

非常感谢!

4

2 回答 2

1

如果您的存储空间是有限的并且您有未知数量的数据进入,您将需要决定当您可以存储更多数据时该做什么。这会以一种或另一种方式出现。如果你假装提供无限存储,当你不能提供时就会出现 DoS。

任何策略都可能分为以下两种(如果可能,为 3 种)方式:

当超过高水位线时,

  1. 删除最旧/最不想要的数据以腾出空间
  2. 丢弃传入数据以避免变满
  3. 暂停传入数据,直到回到低水位线以下

2 和 3 仍然需要你以某种方式找到新的存储空间,所以要么必须删除某些东西,要么你需要更多的存储空间。1 是相当自我维护的,但是可以通过发送足够的新垃圾来清除所有有用的旧数据。建立一个排名系统(最后访问、访问最多、由特权用户加载、这些的组合......)并删除最不重要的可能是最平衡的事情。

于 2012-05-02T07:00:30.623 回答
0

将 CGI 用于直接应用程序设计是有问题的——即,不是网络框架/应用程序引擎。我建议使用 Java 进行图像处理,或者将其包装在 lua 或 python 中。

如果您继续使用 C,请确保您限制 CGI 执行环境,将其放入监狱,查看这篇文章以获得一些灵感,这里是另一个。

于 2010-01-07T19:05:47.550 回答