【问题标题】:Displaying images uploaded to s3 in the frontend - security在前端显示上传到 s3 的图像 - 安全性
【发布时间】:2020-05-08 03:31:40
【问题描述】:

我正在将图像上传到s3,将绝对 URL 保存在我的数据库中,然后在我的前端显示它们。我看到了两个问题 - 第一个是我需要在上传时将它们标记为公开:

$path = $image->storeAs('folder', md5('file_name.jpg'), ['disk' => 's3']);
Storage::disk('s3')->setVisibility($path, 'public');
$url = Storage::disk('s3')->url($path);

第二个问题是我在网站中使用的url里面明显有bucket的名字,例如:

<img src="https://bucket-name-staging.s3.eu-central-1.amazonaws.com/folder/84b4b3j4j34j12j3123h21jh321k312312.jpg">

这也使得它有时会被 adblock 阻止。这是推荐的方法吗?如果图像在s3 存储桶中是私有的,我可以在网站上显示它们吗? (我试过了 - 但这是 403 的回复)。

【问题讨论】:

    标签: php laravel amazon-web-services amazon-s3 image-uploading


    【解决方案1】:

    至于第一个问题,请检查此处提到的以下方法:

    关于第二个问题,请查看:

    • 53 号公路
    • CloudFront(如果您想通过 https 加载文件,则需要)

    【讨论】:

      【解决方案2】:

      如果您使用纯 HTML 代码在您的网站上显示 s3 图像,则无法将它们标记为公开,但在这种情况下,这些文件将可供世界各地的所有人使用,并且它们可以显示您的图像绝对会向您收费或使用签名的网址,但您使用的是 PHP,您可以尝试this

      【讨论】:

        猜你喜欢
        • 2021-03-18
        • 1970-01-01
        • 1970-01-01
        • 2012-12-20
        • 1970-01-01
        • 2020-10-26
        • 1970-01-01
        • 2012-07-04
        • 1970-01-01
        相关资源
        最近更新 更多