我有以下内容。在Linux服务器上的/ tmp文件夹中创建临时映像的网站。我将它存储在这个文件夹中的原因是因为这些图像需要偶尔清除一次,并且使用tmpwatch清除tmp目录要容易得多。现在我的问题是在我的浏览器中显示图像?
代码
<img src="/tmp/3d34636.png" alt="image" />
我用PHP运行Centos
答案 0 :(得分:2)
@Didier已经概述了问题和安全风险。即使您构建了一个接受文件名作为参数的PHP脚本,然后从/tmp
目录传递该文件,您也可以将公共内容与可能包含敏感数据的临时文件混合在一起。你必须保留一个列表,列出你的脚本生成了哪些文件,可以显示哪些文件,哪些文件没有,否则就会出现安全漏洞。
尽管有这些优点,我还是会忘记/tmp
,并将你的图片存储在他们自己的子目录中。经常删除它们(例如使用cron作业,或基于文件使用期限或“上次访问”时间)。
答案 1 :(得分:1)
这里的问题是,这个img标签将由浏览器(客户端)处理。此客户端无权访问HTTP服务器的文件系统。
因此,您要么使用/ tmp /目录中的文件将/ tmp目录定义为HTTP服务器的有效位置(但请注意,它将提供此目录中包含的任何其他文件,可能具有安全性)风险)。
或者将这些生成的图像存储在已由HTTP服务器提供的子目录中。
也可以在服务器上定义此/ tmp位置,以便由分析包含图像文件名的URL的脚本提供服务。然后,该脚本将在/ tmp /中打开该文件并提供它。
答案 2 :(得分:1)
您可以通过创建运行命令的cron作业来让tmpwatch清理另一个目录:
/usr/sbin/tmpwatch -umc 240 /path/to/directory
240
是删除前文件未使用的小时数(在本例中为10天)。有关详细信息,请参阅man tmpwatch
。