显示来自tmp目录的图像
问题描述:
我有以下。在Linux服务器上的/ tmp文件夹中临时创建映像的网站。之所以将它存储在这个文件夹中,是因为这些图像需要一段时间清除一次,并且使用tmpwatch清除tmp目录非常容易。现在我的问题是在我的浏览器中显示图像?显示来自tmp目录的图像
代码
<img src="/tmp/3d34636.png" alt="image" />
我运行的Centos与PHP
答
麻烦这里,是这个img标签会被浏览器(客户端)进行处理。该客户端无权访问HTTP服务器的文件系统。
因此,您必须使用/ tmp /目录中的文件来定义/ tmp目录作为HTTP服务器的有效位置(但请注意,它将提供此目录中包含的任何其他文件,安全风险)。
或者您将这些生成的图像存储在HTTP服务器已经提供的子目录中。
也可以在服务器上定义这个/ tmp位置,以便分析包含图像文件名的URL的脚本。然后这个脚本将打开/ tmp /中的文件并提供它。
答
@Didier已经概述了这个问题和安全风险。即使您构建了接受文件名作为参数的PHP脚本,然后通过/tmp
目录中的文件,您仍然可以将公共内容与可包含敏感数据的临时文件混合在一起。你必须保留你的脚本生成哪些文件的列表,并且可以显示哪些文件,哪些不是,否则就是安全漏洞。
我会说忘记/tmp
尽管有这个优点,并将您的图像存储在他们自己的子目录。经常删除它们(例如,使用cron作业,或基于文件使用时间或“上次访问时间”)。
答
你可以得到tmpwatch通过创建运行命令cron作业清理另一个目录:
/usr/sbin/tmpwatch -umc 240 /path/to/directory
的240
为小时,该文件没有被删除之前使用的数量(以这个案例10天)。有关完整的详细信息,请参阅man tmpwatch
。
+1在/ tmp中存储这个东西真的不是一个好主意;公众无法访问/ tmp。 – 2010-05-20 09:49:30
或者,选项3,您可以拥有一个PHP脚本,用于从/ tmp目录提供文件,并根据需要进行过滤。 – psmears 2010-05-20 09:50:38
@psmears是。但是构建过滤器可能比构建一段时间内清理过的脚本更麻烦。 – 2010-05-20 09:51:18