gpt4 book ai didi

ruby-on-rails - Rails : Obfuscating Image URLs on Amazon S3?(安全问题)

转载 作者:行者123 更新时间:2023-12-04 03:54:18 26 4
gpt4 key购买 nike

为了简短地进行长篇解释,我的 Rails 应用程序允许用户将图像上传到应用程序,他们希望将这些图像 保留在应用程序中(意思是,没有热链接)。

所以我试图想出一种方法来混淆图像 URL,以便图像的地址取决于该用户是否登录到该站点,所以如果有人尝试热链接到图像,他们会收到 401 拒绝访问错误。

我在想,如果我可以通过 Controller 路由请求,我可以重新使用我已经内置到我的应用程序中的大量授权,但我被困在那里。

我希望我的图像可以通过我的一个 Controller 的 URL 访问,例如:

http://railsapp.com/images/obfuscated?member_id=1234&pic_id=7890

如果用户右键单击网站上显示的图像并选择“复制地址”,然后将其粘贴进去,它将是相同的 url(例如,不会泄露图像的实际托管位置).

实际图像将存在于这样的 URL 上:

http://s3.amazonaws.com/s3username/assets/member_id/pic_id.extension

这有可能实现吗?也许使用 Rails 的 render 方法?或者是其他东西?我知道 PHP 可以返回正确的 header 以使浏览器认为它是图像,但我不知道如何在 Rails 中执行此操作...

更新:我希望该应用程序的所有用户在且仅当他们当前登录到该站点时才能查看图像。如果用户当前在网站上没有事件 session ,则直接访问图像应该会产生通用图像或错误消息。

最佳答案

S3 允许您为允许限时下载私有(private)对象的请求构造查询字符串。您可以为每个用户生成唯一的图像 URL,并设置较短的超时时间以防止重复使用。

参见 the documentation ,查找“查询字符串请求身份验证替代方案”部分。我会直接链接,但 frame-busting javascript 阻止了它。

关于ruby-on-rails - Rails : Obfuscating Image URLs on Amazon S3?(安全问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2250202/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com