1

我对安全地上传 php 文件和检索这些文件感到非常困惑。出于安全原因,我被告知将上传的图像存储在文档根目录之外。我可以上传好,但我不确定我知道如何最好地提供这些图像,因为我的 MYSQL 和 HTML 结构。这可能是一种愚蠢的做法,但这是我的问题:

我的文档根目录中存储了 5 张图像。在我的 MYSQL 数据库中,我存储了该图像的 URL 路径(例如 www.mywebsite.com/images/123.jpg)。我的 HTML 索引将查询 MYSQL 并选择图像路径,然后列出图像的所有路径,然后显示图像。

但是,我将图像存储在文档根目录之外(出于安全原因)。有没有一种方法可以将像 www.mywebsite.com/images/outofroot.jpg 这样的 URL 路径存储到 MYSQL 中,然后像上面那样进行选择查询?

4

1 回答 1

0

我很好奇你提到的这些上述“安全原因”是什么,所以如果你能澄清一下,那就太好了!

我的 php 有点生锈,但据我所知,你应该为 jpeg 做这样的事情:

header("Content-type: image/jpeg");
$img = imagecreatefromjpeg("/path/to/file.jpg");
imagejpeg($img);

首先,我们将 设置header为与 jpeg 图像匹配。接下来,我们将图像加载到内存中imagecreatefromjpeg。最后我们为图像服务imagejpeg

这个例子只限于jpegs,根据你的使用,你可能需要其他类型。您可以编写一些逻辑(作为练习;))以使这项工作适用于其他类型。查看和 PHP 文档imagepngimagegif的其他文档以获取如何执行此操作的信息。

如果您需要进行某种安全检查(例如,用户必须有权查看图片),那么将它们存储在工作目录之外并像这样加载它们是一个好主意。

但是,如果您提供的图像不需要任何权限检查即可访问,那么您最好正常提供它们,而不是让中间人为它们提供服务。

于 2012-10-26T04:36:49.543 回答