限制访问后端图像的优化方式

Optimized way of restricting access to images in backend

我正在开发一款具有一些社交网络元素的应用程序:用户可以创建带有图片的帖子,他们可以公开或与朋友分享这些内容。

我现在正在考虑这方面的安全问题。这些图片应该只对上传它们的人和他们 select 查看它们的人可用。

从我看到的帖子来看,推荐的方法之一似乎是通过我的后端服务公开一个 API 端点以控制通过它的访问(这样我可以检查用户的权限)然后return 请求的图片,但我觉得以这种方式提供图片会非常昂贵。

有没有其他既不牺牲安全性又能获得良好性能的方法?

以防万一,我正在为我的后端使用 Spring Boot,为我的应用程序使用 Expo + React Native,并且我计划将图像存储在 AWS S3 上

事实证明,AWS 上的 S3 允许通过签名 URL 访问文件,这意味着只有具有给定签名 URL 的人才能访问该文件。可以通过指定签名 URL 有效的持续时间来进一步限制此签名 URL。

生成这些 URL 可以由 back-end 服务完成而无需访问 AWS,因此不会对性能造成很大影响。