CGI - 临时文件

时间:2010-01-07 18:58:40

标签: c cgi temporary-files

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

答案 0 :(得分:1)

如果您的存储空间有限并且您有未知数量的数据,那么当您可以存储更多数据时,您需要决定该怎么做。这将以某种方式出现。如果您假装提供无限存储空间,那么当您无法使用时,就会有一个DoS。

任何策略都可能属于以下两种方式(如果可能的话,有三种方式):

超过高水位时,

  1. 删除最旧/最不想要的数据以腾出空间
  2. 删除传入数据以避免变满
  3. 暂停传入的数据,直到低于低水位线
  4. 2和3仍然需要您以某种方式找到新的存储空间,因此必须删除某些内容或者您需要更多存储空间。 1是非常自我维护的,但是可以通过发送足够的新垃圾来清除所有有用的旧数据。制作排名系统(最后访问,访问最多,由特权用户加载,组合这些......)和删除最不重要的系统可能是最平衡的事情。

答案 1 :(得分:0)

使用CGI进行直接应用程序设计是值得怀疑的 - 即,不是Web框架/应用程序引擎。我建议使用Java进行图像处理,或者将其包装在lua或python中。

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