2010-01-07 79 views
1

我正在开发一个小CGI应用程序(在C中,CGIC,http://www.boutell.com/cgic/)。我的应用程序需要创建一个临时 文件(用户上传图像,将其保存,以各种方式进行修改,然后 然后显示回给用户)。CGI - 临时文件

创建临时文件时应采取哪些预防措施?

修饰的图像通过一个CGI脚本,它随后从磁盘的临时文件动态地提供:

类似的东西: <html><head><title>here's your modified image</title></head><body><img src="cgi-bin/genimage.cgi?uid=5423423 /></body>

然而,恶意用户可以上载图像和从未请求修改后的图像,这样就填满了硬盘。

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

非常感谢!

+0

你似乎已经回答了你自己的问题.....是定期删除文件。尝试记录一个连接/ IP有多少文件,如果它们超过了阈值,则关闭IP几分钟。 – 2010-01-07 19:02:14

回答

1

如果您的存储空间有限,而且您的数据量不明,则需要决定在可以存储更多数据时应采取的措施。这将会以某种方式出现。如果您假装提供无限存储空间,则在您无法存储时会出现DoS。

任何战略大概分为以下两个(3,如果可能的话)的方式:

在高水位时,

  1. 下降的最古老的/最想要的数据,以腾出空间
  2. 下降传入数据以避免变满
  3. 暂停传入数据,直到回到低位标记

2和3仍然需要您以某种方式查找新存储,因此必须删除某些内容或者需要更多存储空间。 1是非常自我维护的,但可能通过发送足够的新垃圾来清除所有有用的旧数据。建立一个排名系统(最后访问,大多数访问,由特权用户加载,组合这些...)和删除最不重要可能是最好的平衡的事情。

0

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

如果继续使用C,请确保您限制CGI执行环境,将其放入监狱,请检查this post以获得一些灵感,here是另一个。